将 unix 时间转换为 UTC 日期时间
Posted
技术标签:
【中文标题】将 unix 时间转换为 UTC 日期时间【英文标题】:Convert unix time to UTC datetime 【发布时间】:2014-05-06 12:59:49 【问题描述】:我正在尝试将时间戳插入数据库,我需要时间戳为 UTC 时间,而不是服务器的时区。
INSERT INTO my_table SET time = FROM_UNIXTIME(:epochTime)
但是新插入的datetime值不是UTC时间,怎么办?
也许我也应该使用CONVERT_TZ,但我不知道我转换的时区。
【问题讨论】:
【参考方案1】:是的,我会看看 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')
是的,这实际上是正确的,SYSTEM 是一个有效的时区,可以使用 now() 等进行转换。我应该强调这一点,很高兴它正在工作。
我还发现我可以做SET @@session.time_zone := '+00:00'; SELECT FROM_UNIXTIME(1395928430)
,如果插入多列会很方便。以上是关于将 unix 时间转换为 UTC 日期时间的主要内容,如果未能解决你的问题,请参考以下文章
将日期、时间和 UTC 偏移值转换为自 unix 纪元以来的毫秒数?