有沒有辦法在mysql中計算任何時區的偏移量。 例如,要獲取時區'亞洲/加爾各答'的本地時間,我想要做的是計算此時區的偏移量,並將該偏移量添加到GMT以獲取當地時間。在一個時區的MySQL計算偏移量
回答
如果要計算偏移一個時區,如美國/溫哥華UTC可以如下做到這一點的:
SELECT (unix_timestamp() - unix_timestamp(convert_tz(now(), 'Etc/UTC', 'America/Vancouver')))/3600 as offset;
爲此,您首先需要將時區信息加載到mysql中,如下所示:http://dev.mysql.com/doc/refman/5.0/en/mysql-tzinfo-to-sql.html
DATEDIFF(NOW(), UTC_TIMESTAMP())
偏移將取決於你感興趣的時間 - 例如,我現在有一個從UTC一小時偏移,但在冬季我的偏移將爲零。
通過docs page on MySQL time zone support來判斷,您想使用convert_tz
函數。如果您嘗試將UTC轉換爲本地時間,請將「Etc/GMT + 0」作爲「from」時區,將「Asia/Calcutta」作爲「to」傳入。
這不工作,以及一個人認爲.... – 2013-05-14 09:41:08
永遠不要使用偏移量設置時區!始終使用名稱,如「歐洲/布拉格」。否則,當DST發生時您會感到非常驚訝。 – 2014-01-07 22:38:15
SELECT TIMESTAMPDIFF(HOUR, UTC_TIMESTAMP(), NOW());
如果服務器的時區是PST這將返回-8
。
SELECT TIMESTAMPDIFF(SECOND, NOW(), UTC_TIMESTAMP());
以上的結果,如果你想將其與MySQL的DateTime是否加入任何UNIX時間戳。
我混了@ColinM和@Kenneth斯賓塞的答案,因爲我想以小時偏移任意時區:
TIMESTAMPDIFF(HOUR, UTC_TIMESTAMP(), CONVERT_TZ(UTC_TIMESTAMP(), "UTC", "America/Denver"))
-
SELECT ROUND(TIMESTAMPDIFF(MINUTE, UTC_TIMESTAMP(), CONVERT_TZ(UTC_TIMESTAMP(), "Etc/UTC", "Asia/Kolkata"))/60,1)
正如肯尼思指出你需要加載時區信息:http://dev.mysql.com/doc/refman/5.0/en/mysql-tzinfo-to-sql.html
但是,你可以做一些有趣的事情,例如一次找到多個時區的偏移量:
SELECT Name,
TIMESTAMPDIFF(HOUR, UTC_TIMESTAMP(), CONVERT_TZ(UTC_TIMESTAMP(), "Etc/UTC", Name)) as Offset
FROM mysql.time_zone_name
WHERE (Name IN ('America/Vancouver', 'Etc/UTC', 'America/Denver'))
,並提供:
+-------------------+--------+
| Name | Offset |
+-------------------+--------+
| America/Denver | -6 |
| America/Vancouver | -7 |
| Etc/UTC | 0 |
+-------------------+--------+
不知上面@ ColinM的回答是安全的。它讀取時鐘一次還是兩次?有沒有可能,UTC_TIMESTAMP()和NOW()可能相隔一秒鐘?我不知道但這會避免。
SET @now = now();
SET @utc = CONVERT_TZ(@now, 'SYSTEM', '+00:00');
SELECT TIMESTAMPDIFF(MINUTE, @utc, @now);
這是一半問題的一半答案 – Drew 2015-12-29 15:26:40
SELECT TIME_FORMAT(TIMEDIFF(NOW(), CONVERT_TZ(NOW(), 'Asia/Calcutta', 'UTC')), '%H:%i') AS offset;
給予
+--------+
| offset |
+--------+
| 05:30 |
+--------+
- 1. 時區偏移計算
- 2. Firebug和偏移量計算
- 3. Fullcalendar - 時區偏移量
- 4. 找出時區偏移量
- 5. 反向時區偏移量
- 6. 將元素偏移量添加到jQuery偏移量計算中
- 7. 避免重複的偏移量計算
- 8. 計算Facebook封面的偏移量y
- 9. 如何計算WPF中客戶區域的偏移量?
- 10. 在PHP中設置時區偏移量
- 11. 基於時區偏移量的MySql搜索時間戳
- 12. 根據點偏移量計算方向
- 13. 爲IE正確計算偏移量?
- 14. 將數據從PHP傳輸到JavaScript時計算時區偏移量
- 15. 根據電話號碼計算人的時區(GMT偏移)?
- 16. PHP偏移量時區時間
- 17. 對GPU的偏移計算
- 18. 在Postgresql中,如何在「時區」取消時區偏移量
- 19. 時區在asp.net偏移
- 20. 計算相對時間偏移
- 21. javascript日期 - 保留時區偏移量
- 22. Flex Builder dateFormatter時區偏移量
- 23. 偏移計算for循環
- 24. MySQL:如何爲所有時區選擇UTC偏移量和DST?
- 25. 如何計算在GMT時區給定的GMT/UTC偏移量在本地時間?
- 26. 在WPF RichTextBox中根據行號計算ScrollToVerticalOffset的偏移量
- 27. 在Python中獲取計算機的UTC偏移量
- 28. Mysql偏移量無限行
- 29. MYSQL大LIMIT偏移量
- 30. 與MySQL的偏移時間
DATEDIFF返回*天*區別不是幾小時或幾分鐘.. – ColinM 2013-01-03 00:31:46