語法
DATEADD (datepart , number , date )
將指定 number 時間間隔(有符號整數)與指定 date 的指定 datepart 相加後,返回該 date。
參數
datepart
是與number 相加的 date 部分。下表列出了所有有效的 datepart 參數。用戶定義的變量等效項是無效的。
number
是一個表達式,可以解析爲與 date 的 datepart 相加的 int。用戶定義的變量是有效的。
如果您指定一個帶小數的值,則將小數截去且不進行舍入。
date
是一個表達式,可以解析爲 time、date、smalldatetime、datetime、datetime2 或 datetimeoffset 值。date 可以是表達式、列表達式、用戶定義的變量或字符串文字。如果表達式是字符串文字,則它必須解析爲一個 datetime 值。爲避免不確定性,請使用四位數年份。
返回類型
字符串文字的返回數據類型爲 datetime。如果字符串文字的秒數小數位數超過三位 (.nnn) 或包含時區偏移量部分,將引發錯誤。
返回值
datepart 參數
dayofyear、day 和 weekday 返回相同的值。
每個 datepart 及其縮寫都返回相同的值。
如果 datepart 爲 month 且 date 月份(八月份)比返回月份(九月份)的天數多,因而 date 中的日在返回月份中不存在(九月份的31號),則返回返回月份的最後一天。例如,9 月份有 30 天;因此,下面兩個語句返回 2006-09-30 00:00:00.000:
SELECT DATEADD(month, 1, '2006-08-30')
SELECT DATEADD(month, 1, '2006-08-31')
number 參數
number 參數不能超出 int 的範圍。在下面的語句中,number 的參數超出 int 範圍 1。將返回如下錯誤消息:“將表達式轉換爲數據類型 int 時出現算術溢出錯誤。”
SELECT DATEADD(year,2147483648, '2006-07-31');
SELECT DATEADD(year,-2147483649, '2006-07-31');
date 參數
date 參數不能增加至其數據範圍之外的值。在下面的語句中,與 date 值相加的 number 值超出了 date 數據類型的範圍。將返回如下錯誤消息:“將值添加到 'datetime' 列導致溢出。”
SELECT DATEADD(year,2147483647, '2006-07-31');
SELECT DATEADD(year,-2147483647, '2006-07-31');