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 なのね。
さらに、ここで得た DATETIME を DATE に変換するなら CONVERT を使えばOK.
SELECT convert(date, date_time);
おまけ
ついでに T-SQL で 1 日前の日付 datetime を取得するなら DATEADD で -1 を足せばいい。
select dateadd(day, -1, getdate());
T-SQL 慣れると便利。