getdate()
SQL Server で EST 時間に変換したいと思います。
ベストアンサー1
更新された回答 (2020 年 5 月 29 日)
Azure SQLチームは、新しい機能これにより、さらに簡単になります。SELECT CURRENT_TIMEZONE_ID()
サーバーのタイムゾーンを返します。この関数を以下の元の回答に追加すると、単一のクエリがすべての Azure SQL Server でグローバルに機能します。
SELECT CONVERT(DATETIME,GETDATE() AT TIME ZONE (SELECT CURRENT_TIMEZONE_ID()) AT TIME ZONE 'Eastern Standard Time')
このクエリはどの Azure SQL Server でも機能します。
元の回答:
ここには不必要に複雑な回答や、夏時間を考慮していない回答がたくさんあります。大規模なCASE
ステートメントは必要ありません。新しいストアドプロシージャやスカラー/ユーザー定義関数も必要ありません。SQL Server 2016では、タイムゾーンの変換は単線ネイティブ SQL の。これには利点があります。たとえば、レポートから呼び出したり、読み取り専用のデータベースで使用したりできます。
SELECT CONVERT(DATETIME,GETDATE() AT TIME ZONE 'UTC' AT TIME ZONE 'Eastern Standard Time')
以上です。上記では、AT TIME ZONE
より詳細に説明した機能を使用していますここ。ここには新しい関数や機能があるかもしれないので、説明が必要です。上記のクエリは を呼び出してGETDATE()
、そのタイムゾーンを UTC に設定するために を使用します。これにより、暗黙的にデータ型もからAT TIMEZONE
に変更されます。次に、もう一度 を呼び出してEST に切り替えます。最後に、全体を でラップしてに戻し、プロセス中に不要な +/- 時間部分を削除します。datetime
datetimeoffset
AT TIMEZONE
CONVERT()
datetime
クエリを段階的に実行します...
SELECT [GetDate] = GETDATE()
SELECT [GetDateAtUtc] = GETDATE() AT TIME ZONE 'UTC'
SELECT [GetDateAtUtcAtEst] = GETDATE() AT TIME ZONE 'UTC' AT TIME ZONE 'Eastern Standard Time'
SELECT [GetDateEst] = CONVERT(DATETIME,GETDATE() AT TIME ZONE 'UTC' AT TIME ZONE 'Eastern Standard Time')