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

DateDiff 與 DateAdd 在 Access 與 SQL Server 中的差異與用法詳解

     編輯:關於SqlServer

Access 與 SQL Server 在日期時間函數的語法上存在關鍵差異,開發跨資料庫應用時必須特別注意。

核心語法差異

函數Access 語法SQL Server 語法
DateDiffDateDiff('d', Time1, Time2)DateDiff(d, Time1, Time2)
系統時間Now()GETDATE()

實戰代碼範例

' 判斷資料庫類型
IF IsSqlDataBase = 1 Then
    ' SQL Server: 間隔單位無引號,用 GETDATE()
    Conn.Execute "DELETE FROM lyt_log_info WHERE DATEDIFF(day, logintime, GETDATE()) >= 3"
Else
    ' Access: 間隔單位需引號,用 NOW()
    Conn.Execute "DELETE FROM lyt_log_info WHERE DATEDIFF('d', logintime, NOW()) >= 3"
End IF

常見錯誤與避坑指南

  • Access 中使用 GETDATE() → 報錯「函數未定義」
  • Access 中間隔單位不加引號 (如 day、w) → 報錯「至少有一個參數未指定」
  • SQL Server 中間隔單位加引號 → 語法錯誤

DateDiff 間隔單位完整對照表

單位說明備註
yyyy年
q季度
m月
y / d / w天三者在 DateDiff 中皆表示「天數」
ww周 (日曆周)以週日為界計算周數
h / n / s時 / 分 / 秒

DateAdd 語法

DateAdd(interval, number, date)
' 範例:計算距 2007-09-18 還有幾天
Response.Write "離 2007-9-18 還有 " & DateDiff("d", Now(), "2007-9-18") & " 天"

特殊行為說明

  • w (一周的日數) 與 ww (周) 計算邏輯不同:w 計算相隔多少個 7 天,ww 計算日曆周數
  • 跨年計算:12/31 與次年 1/1 的年份差 DateDiff 返回 1,雖實際僅 1 天
  • 若日期字面值省略年份,每次執行會自動帶入當前年份

掌握這些差異,能有效避免跨資料庫遷移或多資料庫支援專案中的日期運算 Bug。

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