SQL Server 日付や時間分の差分を取得する

SQL Server 日付や時間分の差分を取得する

SQL Serverで、日付や時間分の差分を取得する手順を記述してます。

環境

  • OS windows10 pro
  • SQL server 2019
  • SSMS 18.7.1

日差分を取得

日付や時間分などの時間に関する差分を取得する場合は、「DATEDIFF」を使用します。

DATEDIFF(単位, 値1, 値2)

値2 - 値1 の差分が取得されます。

単位には、以下のものが使用できます。

  • year(yy or yyyy) : 年
  • quarter(qq or q) : 四半期
  • month(mm or m) : 月
  • day(dd, d) : 日
  • week(wk, w) : 週
  • dayofyear(dy or y) : 年始からの日数
  • weekday(dw) : 曜日
  • hour(hh) : 時
  • minute(mi or n) : 分
  • second(ss) : 秒
  • millisecond(ms, s) : ミリ秒

実際に、使用してみます。

DECLARE @t1 datetime = N'2000-01-01 00:00:00'
DECLARE @t2 datetime = N'2000-01-11 00:00:00'

SELECT DATEDIFF(hour, @t1, @t2),
	     DATEDIFF(day, @t1, @t2)

実行結果

各単位ごとに差分が取得されていることが確認できます。

値2の方が過去になっていれば、マイナスで表示されます。

DECLARE @t1 datetime = N'2000-01-01 00:00:00'
DECLARE @t2 datetime = N'1999-01-01 00:00:00'

SELECT DATEDIFF(hour, @t1, @t2),
	     DATEDIFF(day, @t1, @t2)

実行結果

また、差分が1以下であれば、計算結果は「0」となります。

DECLARE @t1 datetime = N'2000-01-01 00:00:00'
DECLARE @t2 datetime = N'2000-01-02 00:00:00'

SELECT DATEDIFF(month, @t1, @t2)

実行結果