SQL道場 日付時刻関数 DATEDIFF関数

SQLで日付の差を求めるDATEDIFF関数について記載しています。

対応データベース:MySQL SQL Server Access

DATEDIFF関数の文法

SELECT DATEDIFF(日付要素,日付1,日付2) FROM テーブル (SQL Server)
SELECT DATEDIFF(日付1,日付2) FROM テーブル (MySQL)

その他

引数
Arguments
日付要素
Date element
日付型
Date Type
日付1
Date1
文字列型
String type
日付2
Date2
文字列型
String type
返値
return value
文字型 日付の差が戻ります。
Returns the date difference.

SQLServer

引数日付要素SQL Server、Accessの日付の要素
開始日付以下のいずれかの値で解決できる式
date
datetime
datetimeoffset
datetime2
smalldatetime
time
終了日付開始日付と同様
返値int開始日付と終了日付の差

DATEDIFF関数は指定された日付1,2の日付の差を日付要素の単位の数値で戻します。

MySQL

DATEDIFF() は、ある日付から別の日付までの日数の値として表現された expr1 − expr2 を返します。expr1 および expr2 は、日付または日付時間式です。 値の日付部分のみが計算に使用されます。

https://dev.mysql.com/doc/refman/8.0/ja/date-and-time-functions.html#function_datediff

SQLServer公式

SQL Server、Accessの日付の要素

SQL Server, Access Date Element

SQL Server省略形
abbreviation
Access
yearyy,yyyyyyyy
四半期quarterqq,qq
monthmm,mm
年始からの通算日dayofyeardy,yy
daydd,dd
weekwk,wwww
曜日weekdaydww
時間hourhhh
minutemi,nn
secondss,ss
ミリ秒millisecondms

実行例

MySQLの実行例

/* MySQL 2010/04/30と2009/02/01の差を日で求めるサンプル */
SELECT DATEDIFF('2010-04-30','2009-02-01');  
DATEDIFF関数サンプル実行結果

SQLServerの実行例

/* SQL Server 2010/04/30と2009/02/01の差を日で求めるサンプル */
SELECT DATEDIFF(day,'2009-02-01','2010-04-30');  
DATEDIFF関数サンプル実行結果

現在から指定の日までの日数を計算

/* SQL Server 現在から指定の日までの日数を求めるサンプル */
SELECT DATEDIFF(day,'2020/1/1',GETDATE())
DATEDIFF関数サンプル実行結果