DATEDIFF (Transact-SQL)

傳回跨越兩個指定日期的日期和時間界限數字。

主題連結圖示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 是傳回 datetimesmalldatetime 值或日期格式字元字串的運算式

    由於 smalldatetime 的精確度只到分鐘,因此,當使用 smalldatetime 值時,秒和毫秒一律是 0。

    如果您只指定年份的最後兩位數,小於或等於 two-digit year cutoff 組態選項值最後兩位數的值,便屬於截止年份的相同世紀。大於這個選項值最後兩位數的值,便屬於截止年份的上一世紀。例如,如果 two-digit year cutoff 是 2049 (預設值),49 便會解譯為 2049,2050 會解譯為 1950。若要避免模稜兩可,請使用四位數年份。

    如需有關如何指定時間值的詳細資訊,請參閱<時間格式>。如需有關如何指定日期的詳細資訊,請參閱<日期和時間 (Transact-SQL)>。

  • enddate
    這是計算的結束日期。enddate 是傳回 datetimesmalldatetime 值或日期格式字元字串的運算式。

傳回類型

integer

備註

enddate 中扣除 startdate。如果 startdateenddate 晚,就會傳回負值。

如果結果超出整數值的範圍,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 日期時間格式
時間格式
未分隔的字串格式

說明及資訊

取得 SQL Server 2005 協助