将 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 纪元以来的毫秒数?

在 VBA 中,如何以简单的方式将 UTC UNIX 时间戳转换为本地时区日期?

Ruby:将unix时间戳转换为日期[重复]

oracle 将 unix 纪元时间转换为日期

将Windows UTC时间转换为Unix epoch

将 UTC 日期时间字符串转换为本地日期时间