【发布时间】:2014-05-06 12:59:49
【问题描述】:
我正在尝试将时间戳插入数据库,我需要时间戳为 UTC 时间,而不是服务器的时区。
INSERT INTO my_table SET time = FROM_UNIXTIME(:epochTime)
但是新插入的datetime值不是UTC时间,怎么办?
也许我也应该使用CONVERT_TZ,但我不知道我转换的时区。
【问题讨论】:
我正在尝试将时间戳插入数据库,我需要时间戳为 UTC 时间,而不是服务器的时区。
INSERT INTO my_table SET time = FROM_UNIXTIME(:epochTime)
但是新插入的datetime值不是UTC时间,怎么办?
也许我也应该使用CONVERT_TZ,但我不知道我转换的时区。
【问题讨论】:
是的,我会看看 CONVERT_TZ:
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_convert-tz
从 mysql 中获取时区:
mysql> SELECT @@global.time_zone, @@session.time_zone;
编辑:下面的查询返回当前会话的时区。
select timediff(now(),convert_tz(now(),@@session.time_zone,'+00:00'));
一些信息的网址:How do I get the current time zone of MySQL?
如果服务器有不同的时区,请告诉我们您的操作系统或位置。
【讨论】:
CONVERT_TZ(from_unixtime(1395928430), @@session.time_zone, '+00:00')
SET @@session.time_zone := '+00:00'; SELECT FROM_UNIXTIME(1395928430),如果插入多列会很方便。