我正在尝试在对数据库字段执行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功能仍然是一样的。
答案 0 :(得分:1)
我的回答涵盖了您描述的情况受到错误影响的情况。
您有两种选择:
解析时区信息。确保它始终采用相同的格式。对于上述情况(+08:00
),您可以使用($tz[0] == '+' ? 1 : (-1)) * (3600 * substr($tz, 1, 2) + 60 * substr($tz, 3, 2))
之类的内容。这里$tz
是您的时区信息
将此秒数添加到数据的时间戳中。
使用DateTime
docs解析时间戳。当给定格式为2015-10-03 19:52:06
的字符串时,可以执行此操作。将时区设置为当前时区(docs)。然后,使用用户时区修改时区(使用setTimezone)。