有人可以解释为什么这有所不同?
SELECT
FROM_UNIXTIME(547164000),
DATE_ADD(FROM_UNIXTIME(0), INTERVAL 547164000 SECOND),
@@session.time_zone
返回
1987-05-05 00:00:00
1987-05-04 23:00:00
SYSTEM
系统的时区是CEST,+ 0200(通过命令date +%z
获得)。
我正在使用此DATE_ADD方法来处理负时间戳,因为FROM_UNIXTIME不支持负值。
答案 0 :(得分:0)
可以使用自己的time_zone设置MySQL服务器,这样它的行为就像PHP的time()。也就是说,将time()值存储到TIMESTAMP字段中然后显示结果格式化的日期和时间可能不会给出预期的结果。您必须小心不要混用SQL和非SQL时间戳使用,但要坚持使用其中一个。为什么它给两个表达式提供不同的结果对我来说并不清楚,但可能指出MySQL中的一个错误。您认为将N秒添加到0时会产生与普通N时间相同的结果...您确定它们是在完全相同的time_zone和DST /夏令时规则下进行格式化吗? / p>