带有date_add的Mysql unix_timestamp没有给出正确的时间戳

时间:2015-10-03 15:51:21

标签: php mysql datetime

我正在尝试在对数据库字段执行date_add之后获取unix_timestamp,但它仍然给我原始值的unix_timestamp而不是在date_add之后。

这是我的查询。

SELECT data1.speed,UNIX_TIMESTAMP(Date_Add(data1.dateTimer , Interval '+08:00' hour_minute)) as dateTimer

例如dateIimer值是2015-10-02 15:27:53,而date_add是2015-10-02 23:27:53但是unix_timestamp给了我1443799673,这是指2015-10-02 15:27 :53。我甚至尝试过CONVERT_TZ功能仍然是一样的。

1 个答案:

答案 0 :(得分:1)

我的回答涵盖了您描述的情况受到错误影响的情况。

您有两种选择:

  1. 解析时区信息。确保它始终采用相同的格式。对于上述情况(+08:00),您可以使用($tz[0] == '+' ? 1 : (-1)) * (3600 * substr($tz, 1, 2) + 60 * substr($tz, 3, 2))之类的内容。这里$tz是您的时区信息 将此秒数添加到数据的时间戳中。

  2. 使用DateTime docs解析时间戳。当给定格式为2015-10-03 19:52:06的字符串时,可以执行此操作。将时区设置为当前时区(docs)。然后,使用用户时区修改时区(使用setTimezone)。