次の方法で共有


DATEDIFF (Transact-SQL)

指定した 2 つの日付間の差を、日付および時刻の単位で返します。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

DATEDIFF ( datepart , startdate , enddate )

引数

  • datepart
    差分を計算する基準となる日付の要素を指定します。次の表に、日付の構成要素と SQL Server 2005 で認識される省略形を示します。日付要素と省略形はユーザー宣言変数としては指定できません。

    datepart 省略形

    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 になります。

    年を下 2 桁のみで指定した場合、その数値が two-digit year cutoff 構成オプションに指定されている終了年の下 2 桁の数値以下であれば、終了年と同じ世紀であると見なされます。終了年の下 2 桁の数値より大きい場合は、終了年の世紀の前の世紀であると見なされます。たとえば、two-digit year cutoff が 2049 (既定) の場合、49 は 2049 と認識され、2050 は 1950 と認識されます。こうしたあいまいさを排除するため、4 桁の西暦を使用してください。

    時間値を指定する方法の詳細については、「時刻形式」を参照してください。日付を指定する方法の詳細については、「日付と時刻 (Transact-SQL)」を参照してください。

  • enddate
    計算の終了日を指定します。enddate には datetime または smalldatetime 値を返す式を指定するか、日付形式の文字列を指定します。

戻り値の型

integer

解説

この関数では、startdateenddate から減算されます。startdateenddate よりも後の日付の場合は、負の値が返されます。

結果が整数値の範囲外になる場合はエラーになります。ミリ秒の場合、最大値は 24 日 20 時間 31 分 23.647 秒です。秒の場合、最大値は 68 年です。

分、秒、ミリ秒などの単位で計算すると、すべてのデータ型で、DATEDIFF で指定した結果に一貫性が保たれます。結果は、先頭の日付と 2 番目の日付の間にある 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 の参考資料の入手