在MySQL计算时区的偏移量

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时间戳.


Shi*_*ibu 7

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)


Jon*_*eet 5

偏移量取决于您感兴趣的时间 - 例如,我目前与UTC有一小时的偏移量,但在冬季,我的偏移量将为零.

MySQL时区支持文档页面来判断,您想要使用该convert_tz函数.如果您尝试将UTC转换为当地时间,请将"Etc/GMT + 0"作为"from"时区传递,将"Asia/Calcutta"作为"to"传递.