首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL 日期加減運算:DATEADD 函數完整參數與實戰範例

     編輯:MySQL 資料庫相關知識

DATEADD 是 SQL Server 進行日期加減運算的核心函數。本文說明語法、interval 參數完整對照、三種常用呼叫方式(預存程序、簡單查詢、動態 SQL)、以及 pubs 範例資料庫實測。

DATEADD 語法與參數

DATEADD(interval, number, date)
參數說明
interval時間間隔單位(必填)
number加減數量,正數=未來,負數=過去
date基準日期

Interval 完整對照表

interval縮寫說明
yearyy, yyyy年
quarterqq, q季
monthmm, m月
dayofyeardy, y年度天數
daydd, d日
weekwk, ww週
weekdaydw平日
hourhh時
minutemi, n分
secondss, s秒
millisecondms毫秒
microsecondmcs微秒
nanosecondns奈秒

三種呼叫方式

方式一:預存程序/批次處理

SET NOCOUNT ON
DECLARE @kp TABLE (id INT, ys INT, syrq DATETIME)
INSERT @kp SELECT 1, 2, '2008-08-08' UNION ALL
           SELECT 2, 3, '2008-09-01' UNION ALL
           SELECT 3, 33, '2008-08-11'

SELECT id, DATEADD(month, ys, syrq) AS 新日期 FROM @kp

方式二:簡單查詢(欄位為字串需 CAST)

SELECT DATEADD(month, CAST(ys AS INT), syrq) AS 新日期 FROM kp

方式三:動態 SQL 字串拼湊

DECLARE @sqlstr NVARCHAR(MAX)
SET @sqlstr = 'SELECT * FROM 表 WHERE 時間字段 = DATEADD(day, 5, ''2008-08-08'')'
EXEC sp_executesql @sqlstr

pubs 範例資料庫實測

USE pubs
GO
SELECT DATEADD(day, 21, pubdate) AS timeframe FROM titles
GO

常見坑點提醒

  • ⚠️ number 超出 INT 範圍會溢位
  • ⚠️ date 為字串時,隱含轉換可能受語言/日期格式設定影響,**建議永遠 CAST 為 DATETIME**
  • ⚠️ weekday (dw) 與 week (wk) 行為不同:前者加平日,後者加 7 天
  • ✅ 月底日期加月份會自動調整(如 1/31 + 1 month = 2/28 或 2/29)

Access 環境對應

Access 同樣支援 DateAdd,語法相同:DateAdd(interval, number, date),interval 字串同上。

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