共用方式為


DATEDIFF (SSIS)

傳回跨越兩個指定日期的日期和時間界線數目。datepart 參數會識別要比較的日期和時間界線。

語法

DATEDIFF(datepart, startdate, endate)

引數

  • datepart
    是指定日期中哪一個部份要進行比較和傳回值的參數。

  • startdate
    是間隔的開始日期。

  • endate
    是間隔的結束日期。

結果類型

DT_I4

備註

下表列出運算式評估工具所辨識的日期部份與縮寫。

DATEPART

縮寫

Year

yy, yyyy

Quarter

qq, q

Month

mm, m

Dayofyear

dy, y

Day

dd, d

Week

wk, ww

Weekday

dw, w

Hour

Hh

Minute

mi, n

Second

ss, s

Millisecond

Ms

如果任何引數為 Null,則 DATEDIFF 會傳回 Null 結果。

日期常值必須明確轉換為日期資料類型之一。如需詳細資訊,請參閱<Integration Services 資料類型>。

[!附註]

當日期常值明確轉換成以下其中一個日期資料類型時,此運算式將會驗證失敗:DT_DBTIMESTAMPOFFSET、DT_DBTIMESTAMP2 和 DT_DBTIME2。

如果日期無效、日期或時間單位不是字串、開始日期不是日期,或結束日期不是日期,則會發生錯誤。

如果結束日期早於開始日期,則函數會傳回負數。如果開始和結束日期相等或落在相同的間隔內,則函數會傳回零。

範例

此範例會計算兩個日期常值之間的天數。如果日期格式為 "mm/dd/yyyy",則函數會傳回 7。

DATEDIFF("dd", (DT_DBTIMESTAMP)"8/1/2003", (DT_DBTIMESTAMP)"8/8/2003")

此範例會傳回日期常值和目前日期之間的月數。

DATEDIFF("mm", (DT_DBTIMESTAMP)"8/1/2003",GETDATE())

此範例會傳回 ModifiedDate 資料行中的日期與 YearEndDate 變數之間的星期數。如果 YearEndDate 的資料類型為 date,則不需要明確轉換。

DATEDIFF("Week", ModifiedDate,@YearEndDate)