getdate() を EST に変換する 質問する

getdate() を EST に変換する 質問する

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 に切り替えます。最後に、全体を でラップしてに戻し、プロセス中に不要な +/- 時間部分を削除します。datetimedatetimeoffsetAT TIMEZONECONVERT()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')

ここに画像の説明を入力してください

おすすめ記事