我在亞馬遜AWS上使用SQL Server 2016。我的電子郵件在我的亞馬遜傀儡寄來的時候發送的時間不正確。當我嘗試在本地重新創建這個bug時,時間是正確的。以下是我如何使用at time zone
的示例。SQL Server 2016的「在時區」功能沒有按預期工作
getDate() at time zone 'utc' at time zone u.timezone
u.timezone
其中是用戶的時區和u
指別名的表users
。
被輸出的時間是在UTC時間,所以我看到7:36pm
,而不是2:36pm
(它們格式化MomentJS)
我真的不知道這一個,對不起你們和女生開始。
UPDATE
我的服務器發送正確的時間(用正確的時區偏移),以電子郵件的工廠。當服務器創建電子郵件時,使用MomentJS格式化時間。準系統moment()
函數將花費時間和時區偏移量(-5:00)並將其調整爲本地機器的本地時間。我的機器上的當地時間是EST,但在亞馬遜(電子郵件正在創建的地方)不是。因此我必須使用moment.parseZone()
。
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"
因爲我看不到這種變化,直到它推到我們的開發環境,我將無法知道這個固定的,但我認爲這是問題。
是否有一個原因,你不能使用['GETUTCDATE()'](https://msdn.microsoft.com/en-us/library/ms178635.aspx)的第一部分?錯誤的時間有多不正確?你在什麼時區? –
對不起,我打算在我的文章中加入輸出,我會編輯。沒有理由我不能使用它。我試試這個。 – kaleoh
哦,我想你的服務器實例可能無法在UTC運行,在這種情況下的[SQL SYSDATETIME和SYSUTCDATETIME]列出的功能之一(http://stackoverflow.com/a/31584658/1115360)將是適合你用法。 –