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)