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

SQL SQL
この記事は約3分で読めます。

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

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

DATEDIFF関数の文法

SELECT DATEDIFF(日付要素,日付1,日付2) FROM テーブル (SQL Server)
SELECT DATEDIFF(日付1,日付2) FROM テーブル (MySQL)
引数日付要素日付型
日付1文字列型
日付2文字列型
返値文字型 日付の差が戻ります。

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

DATEDIFF (Transact-SQL) - SQL Server
DATEDIFF 関数の Transact-SQL リファレンス。 datepart に基づき、開始と終了日付の間の数値的な差が返されます。

SQL Server、Accessの日付の要素

SQL Server省略形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');  
MySQL 2010/04/30と2009/02/01の差を日で求めるサンプル実行結果

SQLServerの実行例

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

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

/* SQL Server 現在から指定の日までの日数を求めるサンプル */
SELECT DATEDIFF(day,'2020/1/1',GETDATE())
SQL Server 現在から指定の日までの日数を求めるサンプル実行結果
タイトルとURLをコピーしました