現地時間で日時の値を表示しようとしています。デフォルトでは、Azure SQLデータベースは日付と時刻をUTCで保存しますが、これを回避する方法はありません。 (これは、敷地内のSQL Serverから移行する際に苦労しました)中央ヨーロッパ時間に格納された時間値を表示したいと思います。Azure SQLの現地時間を表示
現地時間は11:30(CET)です。 UTC時間は10:30です。
DECLARE @TestTime DATETIME;
SET @TestTime = '2016-11-02 10:30:00'
SELECT @TestTime
--Returns 2016-11-02 10:30:00
SELECT @TestTime AT TIME ZONE 'Central European Standard Time'
--Returns 02 November 2016 10:30:00 +01:00
何とか2016-11-02 11:30:00に戻る必要があります。今すぐ楽しい部分のために:
here示唆されているとおり:
SELECT convert(DATETIME,@TestTime AT TIME ZONE 'Central European Standard Time',1)
--Returns 2016-11-02 09:30:00 So instead of adding the timezonedifference it subtracts it.
これは動作しますが、私が病気になります:
SELECT DATEADD(MINUTE,DATEPART(tz,@TestTime AT TIME ZONE 'Central European Standard Time'),@TestTime)
--Returns 2016-11-02 11:30:00
同様のソリューションは、hereが示唆されているが、それはで遊びます文字列演算。私の疑惑は、AT TIME ZONEで何かが間違っていることです。それは10時30分+1ではなく、11時30分+1を表示する必要がありますか?
現地時間でUTC時刻を表示する方法はありませんか?この「ハッキング」は非常に汚れていると感じています。特に、Microsoftの修正やバグの導入など、いつでも問題が発生する可能性があります。
ありがとうございます!
最終的にローカル日付時刻を表示しようとしていますか? –
@drediske [CET](https://www.timeanddate.com/time/zones/cet)にあります。この例で見たいのは11:30です。 (実際に私のdbには、他のいくつかのタイムゾーンのユーザーがいますし、夏時間も再生されるので、少し複雑です。)それは、保存されたUTC時間値を希望のローカル時間に変換できることにまで沸きます。 – vacip
私はこれらの非コメント-1を愛しています...もし私が投票者が私を啓発すれば、質問を改善したいと思います。 – vacip