DATEDIFF (Transact-SQL)
指定した 2 つの日付間の差を、日付および時刻の単位で返します。
構文
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
解説
この関数では、startdate が enddate から減算されます。startdate が enddate よりも後の日付の場合は、負の値が返されます。
結果が整数値の範囲外になる場合はエラーになります。ミリ秒の場合、最大値は 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 日付時刻形式
時刻形式
区切りのない文字列形式