T-SQL で unix timestamp を datetimeに変換

 
SQL Server 2019 のテーブルに格納されてる UNIX TIMESTAMP を日本時間の日付に変換したかったのでメモ。
DATEADD を使って9時間分足した上でタイムゾーンを ‘Tokyo Standard Time’ にする。

DECLARE @UnixTimestamp INT, @LocalTimeOffset  INT;

SET @UnixTimestamp = 1638680400;
SET @LocalTimeOffset = DATEDIFF(second,GETUTCDATE(),GETDATE());

SELECT dateadd(second, (@UnixTimestamp + @LocalTimeOffset), '1970-01-01') at time zone 'Tokyo Standard Time';

Japan Standard Time じゃなくて Tokyo Standard Time なのね。

T-SQL で UNIX TIMESTAMP を DATETIME に変換

さらに、ここで得た DATETIME を DATE に変換するなら CONVERT を使えばOK.

SELECT convert(date, date_time);

DATETIME を DATE に変換

 

おまけ

ついでに T-SQL で 1 日前の日付 datetime を取得するなら DATEADD で -1 を足せばいい。

select dateadd(day, -1, getdate());

DATEADD で 1 日前の日付を取得

T-SQL 慣れると便利。