次の方法で共有


DATEDIFF (SSIS 式)

指定された 2 つの日付間の差を、日付および時刻の単位で返します。datepart パラメーターにより、差分を計算する基となる日付と時刻を指定します。

構文

DATEDIFF(datepart, startdate, endate)

引数

  • datepart
    比較して値を返す日付の要素を指定するパラメーターです。

  • startdate
    間隔の開始日です。

  • endate
    間隔の終了日です。

戻り値の型

DT_I4

説明

次の表に、式エバリュエーターで認識される日付要素 (datepart) と省略形を示します。

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 のいずれかの日付データ型に明示的にキャストされると、式の検証は失敗します。

日付が有効でない場合、日付または時刻の単位が文字列でない場合、開始日が日付でない場合、または終了日が日付でない場合は、エラーが発生します。

終了日が開始日よりも前の日付の場合、この関数は負の値を返します。開始日と終了日の日付が同一、または同じ間隔の範囲内である場合、この関数は 0 を返します。

この例では、2 つの日付リテラル間の日数が計算されます。日付が "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)