DATEDIFF返回跨兩個指定日期的日期和時間邊界數。 語法DATEDIFF ( datepart , startdate , enddate ) 参數datepart是規定了應在日期的哪

DATEDIFF
返回跨兩個指定日期的日期和時間邊界數。

語法
DATEDIFF ( datepart , startdate , enddate )

参數
datepart

是規定了應在日期的哪一部分計算差額的参數。下表列出了 Microsoft SQL Server 識別的日期部分和縮寫。

日期部分 縮寫
year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms


startdate

是計算的開始日期。startdate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表達式。

因为 smalldatetime 只精確到分钟,所以當用 smalldatetime 值時,秒和毫秒總是 0。

如果您只指定年份的最後兩位數字,則小於或等於"兩位數年份截止期"配置選項的值的最後兩位數字的數字所在世紀與截止年所在世紀相同。大於該選項的值的最 後兩位數字的數字所在世紀为截止年所在世紀的前一個世紀。例如,如果 two digit year cutoff 为 2049(默認),則 49 被解釋为 2049,2050 被解釋为 1950。为避免模糊,請使用四位數的年份。

有關時間值指定的更多信息,請参見時間格式。有關日期指定的更多信息,請参見 datetime 和 smalldatetime。

enddate

是計算的終止日期。enddate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表達式。

返回類型
integer

注釋
startdate 是從 enddate 減去。如果 startdate 比 enddate 晚,返回負值。

當結果超出整數值範圍,DATEDIFF 產生錯誤。對於毫秒,最大數是 24 天 20 小時 31 分钟零 23.647 秒。對於秒,最大數是 68 年。

計算跨分钟、秒和毫秒這些邊界的方法,使得 DATEDIFF 给出的結果在全部數據類型中是一致的。結果是帶正負號的整數值,其等於跨第一個和第二個日期間的 datepart 邊界數。例如,在 1 月 4 日(星期日)和 1 月 11 日(星期日)之間的星期數是 1。

示例
此示例確定在 pubs 數據庫中標題發布日期和當前日期間的天數。

USE pubs
GO
SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days
FROM titles
GO