有没有办法在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. 使用时区偏移量计算日期时间值偏移量
- 3. 如何计算大型应用程序的时区偏移量?
- 4. 计算XSLT中的时区偏移量等于oracle TZ_OFFSET函数
- 5. Firebug和偏移量计算
- 6. SQl服务器时区偏移量计算
- 7. 反向时区偏移量
- 8. 找出时区偏移量
- 9. 忽略时区偏移量
- 10. Fullcalendar - 时区偏移量
- 11. 获取时区偏移量
- 12. Collectd时区偏移量
- 13. 将元素偏移量添加到jQuery偏移量计算中
- 14. 如何计算结构的偏移量
- 15. 避免重复的偏移量计算
- 16. Flot Axes的p2c计算偏移量
- 17. 如何计算正确的偏移量?
- 18. 计算字节偏移量的问题
- 19. 如何计算scrollViewer的偏移量?
- 20. 计算Facebook封面的偏移量y
- 21. 如何计算WPF中客户区域的偏移量?
- 22. 在PHP中设置时区偏移量
- 23. 基于时区偏移量的MySql搜索时间戳
- 24. 从经纬度计算GMT偏移量
- 25. 为IE正确计算偏移量?
- 26. 如何用偏移量计算XOR?
- 27. 根据点偏移量计算方向
- 28. 根据电话号码计算人的时区(GMT偏移)?
- 29. 将数据从PHP传输到JavaScript时计算时区偏移量
- 30. 计算行的偏移
DATEDIFF返回*天*区别不是几小时或几分钟.. – ColinM 2013-01-03 00:31:46