【问题标题】:MySQL ADD_DATE timezone issueMySQL ADD_DATE 时区问题
【发布时间】:2017-09-16 14:30:42
【问题描述】:

我在我的数据库中存储带有 Unix 时间戳的事件 当我想在 MySQL 中使用FROM_UNIXTIMEDATE_ADD 函数获取它们作为日期时间时,生成的不同值正好等于我当前位置的时区(UTC +3:30)。 我必须使用DATE_ADD 函数,因为FROM_UNIXTIME 不适用于负时间戳。我该如何解决这个问题?! 提前谢谢大家。

这是我的查询:

SELECT topic, `start`, FROM_UNIXTIME(`start`), DATE_ADD('1970-01-01 1:0:0', INTERVAL `start` SECOND) FROM uzr_event

这是答案: Results

【问题讨论】:

    标签: mysql datetime timezone dateadd


    【解决方案1】:

    结果偏移的原因是因为您传递给DATE_ADD 的字符串是由会话时区而不是UTC 解释的。

    您可以在查询之前执行此操作:

    SET time_zone = 'UTC';
    

    或者您可以将会话时区排除在外,然后进行更改:

    DATE_ADD('1970-01-01 1:0:0', INTERVAL `start` SECOND)
    

    到这里:

    DATE_ADD(FROM_UNIXTIME(0), INTERVAL `start` SECOND)
    

    【讨论】: