我试图在对我的数据库字段执行 date_add 后获取 unix_timestamp,但它仍然给我原始值的 unix_timestamp,而不是在 date_add 之后。
这是我的查询。
SELECT data1.speed,UNIX_TIMESTAMP(Date_Add(data1.dateTimer , Interval '+08:00' hour_minute)) as dateTimer
例如,在 date_add 为 2015-10-02 23:27:53 之后,dateTimer 值为 2015-10-02 15:27:53 但 unix_timestamp 为我提供 1443799673,它指的是 2015-10-02 15:27 :53。我什至尝试了 CONVERT_TZ 函数,它仍然是一样的。
最佳答案
我的回答涵盖了您描述的情况受错误影响的情况。
你有两个选择:
解析时区信息。确保它始终采用相同的格式。对于上面的情况 (
+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 )。
关于php - 带有 date_add 的 Mysql unix_timestamp 没有给出正确的时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32924501/