2017-04-01 104 views
0

我的sql服務器位於格林尼治標準時間,我需要獲得EST等效tz。將格林威治標準時間轉換爲EST

不知何故,EST是錯誤的。

select now(),convert_tz(now(),'GMT','EST'),convert_tz(now(),'GMT','EST') - interval 10 minute 

EST時應該是20:30,而不是19:30

這裏是我的結果 -

enter image description here

+3

東部時區的大部分地區目前正在觀測東部*日光*時間,即'EDT'。這就是爲什麼最好使用像'America/New_York'這樣的時區字符串。 – ceejayoz

回答

0

正如@ceejayoz提到的,位置的時區的變化取決於夏令時觀察。另外,將它稱爲UTC而不是GMT時更爲恰當,因爲當您將其稱爲GMT時,它意味着您的服務器將調諧到某個當地時間,例如倫敦時間,並且您的服務器的時間將切換到其他時間,說BST,當觀察夏令時。

假設我假設您正在嘗試溝通,您的服務器設置爲UTC時間,從未遵守夏令時,並且您希望將其轉換爲美國大部分美國城市觀察到的時間,則解決方案應爲

SELECT NOW(), 
    CONVERT_TZ(NOW(), 'UTC', 'America/New_York'), 
    CONVERT_TZ(NOW(), 'UTC', 'America/New_York') - INTERVAL 10 MINUTE; 
+1

修正了你的斜槓,但是 - 如果你使用'UTC_TIMESTAMP()'而不是'NOW()',那麼你的服務器設置的時區是無關緊要的。 –

+0

GMT不遵守夏令時。 GMT和UTC是同一時間,不到一秒鐘。在倫敦觀察夏令時的時區被命名爲「歐洲/倫敦」。 –

相關問題