Var*_*run 13 mysql timezone offset
在MySQL中有没有办法计算任何时区的偏移量?例如,获取时区中的本地时间Asia/calcutta.我想要做的是计算这个时区的偏移量,并将该偏移量添加到GMT以获得当地时间.
Ken*_*cer 14
如果您想从UTC计算美国/温哥华等时区的偏移量,您可以按如下方式进行:
SELECT (unix_timestamp() - unix_timestamp(convert_tz(now(), 'Etc/UTC', 'America/Vancouver'))) / 3600 as offset;
Run Code Online (Sandbox Code Playgroud)
为此,您首先需要将时区信息加载到mysql中,如下所示:http://dev.mysql.com/doc/refman/5.0/en/mysql-tzinfo-to-sql.html
Col*_*inM 12
SELECT TIMESTAMPDIFF(HOUR, UTC_TIMESTAMP(), NOW());
如果服务器的时区是PST,则返回-8.
SELECT TIMESTAMPDIFF(SECOND, NOW(), UTC_TIMESTAMP());
如果要将其与MySQL DateTimes进行比较,请将上述结果添加到任何unix时间戳.
SELECT TIME_FORMAT(TIMEDIFF(NOW(), CONVERT_TZ(NOW(), 'Asia/Calcutta', 'UTC')), '%H:%i') AS offset;
Run Code Online (Sandbox Code Playgroud)
给予
+--------+
| offset |
+--------+
| 05:30 |
+--------+
Run Code Online (Sandbox Code Playgroud)
偏移量取决于您感兴趣的时间 - 例如,我目前与UTC有一小时的偏移量,但在冬季,我的偏移量将为零.
从MySQL时区支持的文档页面来判断,您想要使用该convert_tz函数.如果您尝试将UTC转换为当地时间,请将"Etc/GMT + 0"作为"from"时区传递,将"Asia/Calcutta"作为"to"传递.