私はAmazon AWSでSQL Server 2016を使用しています。私の電子メールはAmazonで私のpupperから送信されたときに間違った時間で送信されています。このバグをローカルで再現しようとすると、時が正しいことになります。以下は、私がat time zone
をどのように使用するかの例です。 u.timezone
は、ユーザのタイムゾーンとu
あるSQL Server 2016の "at time zone"機能が期待通りに機能しない
getDate() at time zone 'utc' at time zone u.timezone
はエイリアステーブルusers
を指します。出力されて
時間はUTC時刻であるので、私はこの1つ、申し訳ありません男とギャルを開始する場所を私は本当に知らない(彼らはMomentJSでフォーマットされている)
7:36pm
の代わり2:36pm
を参照してください。
UPDATE
私のサーバーは、電子メールの工場に(オフセット正しいタイムゾーンで)正しい時刻を送信しています。サーバーが電子メールを作成すると、時刻はMomentJSを使用してフォーマットされます。 barebones moment()
関数は、タイムゾーンオフセット(-5:00)で時間がかかり、ローカルマシンのローカル時刻に調整されます。私のマシンの現地時間はESTですが、アマゾン(電子メールが作成されている場所)ではありません。したがって、moment.parseZone()
を使用する必要があります。 MomentJS docsから
:
If your date format has a fixed timezone offset, use moment.parseZone:
moment.parseZone("2013-01-01T00:00:00-13:00");
This results in a date with a fixed offset:
"2013-01-01T00:00:00-13:00"
それが私たちのdevの環境にプッシュされるまで、私はこの変更を見ることができないので、私はこれはそれを修正しているかどうかを知ることはできませんが、私はこれがだったと思います問題。
最初の部分に['GETUTCDATE()'](https://msdn.microsoft.com/en-us/library/ms178635.aspx)を使用できない理由はありますか?不正確な時間はどのくらい間違っていますか?あなたは何タイムゾーンですか? –
申し訳ありませんが私の投稿にouputを含めることを意味しました、私は編集します。私はそれを使うことができない理由はない。私はこれを試してみる。 – kaleoh
ああ、サーバーインスタンスがUTCで実行されていない可能性があります。その場合、[SQL SYSDATETIMEおよびSYSUTCDATETIME](http://stackoverflow.com/a/31584658/1115360)に記載されている関数のいずれかがあなたの環境に適しています使用法。 –