首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

Access 與 SQL Server 語法差異對照:日期、時間、邏輯與運算子

     編輯:關於SqlServer

前言

在將 Access 應用程式遷移至 SQL Server,或撰寫跨資料庫相容的 SQL 陳述式時,語法差異是常見絆腳石。本文整理兩大資料庫在日期時間函數、日期常值、邏輯判斷、求餘運算、目前日期時間取得等核心語法的對照表,並附上實用範例,供開發人員快速查閱。

一、DATEDIFF 函數:日期/時間差異計算

間隔單位Access 語法SQL Server 語法
天DATEDIFF('d', start, end)DATEDIFF(day, start, end)
小時DATEDIFF('h', start, end)DATEDIFF(hour, start, end)
月DATEDIFF('m', start, end)DATEDIFF(month, start, end)

範例:查詢與今天相差 30 天的記錄

-- Access
SELECT * FROM Orders WHERE DATEDIFF('d', OrderDate, DATE()) = 30;

-- SQL Server
SELECT * FROM Orders WHERE DATEDIFF(day, OrderDate, GETDATE()) = 30;

二、日期常值表示法

資料庫語法範例
Access#YYYY-MM-DD# 或 #" & dateVar & "#SELECT * FROM T WHERE D = #2024-01-15#
SQL Server'YYYY-MM-DD' 或 '" & dateVar & "'SELECT * FROM T WHERE D = '2024-01-15'

建議統一使用 ISO 8601 格式 YYYY-MM-DD,兩者皆可正確解析。

三、布林/邏輯判斷

情境AccessSQL Server
欄位為 False/0WHERE NOT FinishedWHERE Finished = 0
欄位為 True/1WHERE FinishedWHERE Finished = 1

SQL Server 無 Boolean 型別,請改用數值比較。

四、求餘運算子

資料庫運算子範例
AccessMODSELECT A MOD B FROM T
SQL Server%SELECT A % B FROM T

五、取得目前日期時間

資料庫函數備註
AccessNOW()包含日期與時間
SQL ServerGETDATE()精度至 3.33 毫秒;高精度需求可用 SYSDATETIME()

六、遷移實務建議

  1. 統一日期常值:全面改用單引號 'YYYY-MM-DD',相容性最佳。
  2. 布林欄位改為 BIT/INT:Access 的 Yes/No 欄位遷移時轉為 SQL Server BIT,查詢條件改寫為 = 1 / = 0。
  3. DATEDIFF 間隔參數去引號:Access 需 'd',SQL Server 直接用 day。
  4. MOD 改 %:全域搜尋取代。
  5. NOW() 改 GETDATE():並注意時區與精度差異。

七、快速參考卡

Access          → SQL Server
------------------------------------------------
#date#          → 'date'
DATEDIFF('d',..) → DATEDIFF(day,..)
DATEDIFF('h',..) → DATEDIFF(hour,..)
DATEDIFF('m',..) → DATEDIFF(month,..)
NOT field       → field = 0
field           → field = 1
A MOD B         → A % B
NOW()           → GETDATE()

掌握上述對照,可大幅降低跨資料庫遷移與相容性開發的除錯時間。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved