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

标签 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

例如,在 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 函数,它仍然是一样的。

最佳答案

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

你有两个选择:

  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 )。

关于php - 带有 date_add 的 Mysql unix_timestamp 没有给出正确的时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32924501/

相关文章:

php - 复杂 SQL 查询的默认下拉选项

python - 带时区到纪元的日期时间

sql - sql server中两个日期时间的差异

php创建没有类的对象

mysql - PHP 中的 SQL SUM 行

mysql - 使用存储过程选择查询

java - 两个不同时区之间的 Joda 时间 UTC 值不匹配

php - 如何获取以前查找过的一行的MySQL主键?

php - 尝试使用没有国家代码 ('es' 的 gettext 代替 'es_ES' )

php - 从 mysql 数据库中发出一个多词的排序