i在我的数据库上存储带有UNIX Time-Stamp的事件当我想用FROM_UNIXTIME
或DATE_ADD
在MySQL中以DateTime的形式获取它们时,生成的不同值与当前位置的时区相等(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
这里是答案:结果
您的结果偏移的原因是,您要传递给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)