DATEDIFF
傳回跨越兩個指定日期的日期與時間界線數目。 語法
DATEDIFF ( datepart , startdate , enddate ) 引數
datepart是指定要以日期的那一個部份要用來計算差異的參數。下表列出 Microsoft® SQL Server™ 所能辨識的日期部份與縮寫。Datepart 縮寫 
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 微秒 
startdate是計算的開始日期。startdate 是一個傳回 datetime 或 smalldatetime 值的運算式,或是一個使用日期格式的字元字串。 由於 smalldatetime 的精確度只有到分鐘,因此若使用 smalldatetime 值,則秒和毫秒部份必為 0。如果只指定年份的後面兩位數字,那麼小於或等於 two digit year cutoff 組態選項值最後兩位數字的值,會與截止年份位於相同世紀。大於此選項值最後兩位數字的值,其世紀為截止年份的前一個世紀。例如,若 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。範例
這個範例決定了現行日期和 pubs 資料庫中標題的發行日之間的差異。USE pubs
GO
SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days
FROM titles
GO