DATEDIFF (Transact-SQL)
傳回跨越兩個指定日期的日期和時間界限數字。
語法
DATEDIFF ( datepart , startdate , enddate )
引數
datepart
這是指定要根據日期的哪個部分來計算差異的參數。下表列出 SQL Server 2005 所識別之日期部分和縮寫。這些日期部分和縮寫不能以使用者宣告變數方式提供。日期部分 縮寫 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 組態選項值最後兩位數的值,便屬於截止年份的相同世紀。大於這個選項值最後兩位數的值,便屬於截止年份的上一世紀。例如,如果 two-digit year cutoff 是 2049 (預設值),49 便會解譯為 2049,2050 會解譯為 1950。若要避免模稜兩可,請使用四位數年份。
如需有關如何指定時間值的詳細資訊,請參閱<時間格式>。如需有關如何指定日期的詳細資訊,請參閱<日期和時間 (Transact-SQL)>。
- enddate
這是計算的結束日期。enddate 是傳回 datetime 或 smalldatetime 值或日期格式字元字串的運算式。
傳回類型
integer
備註
從 enddate 中扣除 startdate。如果 startdate 比 enddate 晚,就會傳回負值。
如果結果超出整數值的範圍,DATEDIFF 會產生錯誤。如果是毫秒,最大數目是 24 天、20 小時、31 分鐘和 23.647 秒。如果是秒,最大數目是 68 年。
跨越界限 (如分、秒和毫秒) 來計數的方法,會使 DATEDIFF 所指定的結果跨越所有資料類型仍保持一致。結果是一個帶正負號的整數值,等於跨越第一個和第二個日期的 datepart 界限數字。例如,1 月 4 日星期日和 1 月 11 日星期日之間的星期數是 1。
範例
下列範例會判斷目前日期和 AdventureWorks
資料庫中產品訂購日期相距的天數。
USE AdventureWorks;
GO
SELECT DATEDIFF(day, OrderDate, GETDATE()) AS NumberOfDays
FROM Sales.SalesOrderHeader;
GO
請參閱
參考
CAST 和 CONVERT (Transact-SQL)
資料類型 (Transact-SQL)
日期和時間函數 (Transact-SQL)
其他資源
ISO 8601 格式
字母日期格式
數值日期格式
ODBC 日期時間格式
時間格式
未分隔的字串格式