【问题标题】:Convert unix time to UTC datetime将 unix 时间转换为 UTC 日期时间
【发布时间】:2014-05-06 12:59:49
【问题描述】:

我正在尝试将时间戳插入数据库,我需要时间戳为 UTC 时间,而不是服务器的时区。

INSERT INTO my_table SET time = FROM_UNIXTIME(:epochTime)

但是新插入的datetime值不是UTC时间,怎么办?

也许我也应该使用CONVERT_TZ,但我不知道我转换的时区。

【问题讨论】:

    标签: mysql time utc epoch


    【解决方案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),如果插入多列会很方便。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 2012-10-07
    • 1970-01-01
    相关资源
    最近更新 更多