UNIX_TIMESTAMP无法正常工作

时间:2013-01-24 20:09:35

标签: php mysql database timestamp

在我的数据库中,我有记录:'2013-01-24 16:40:08'

在PHP上使用 strtotime 功能,我得到时间戳 1359045608

执行查询:

SELECT UNIX_TIMESTAMP(my_timestamp_column) FROM my_table WHERE my_id_column = my_id

我得到时间戳 1359056408 而不是时间戳 1359045608

转换 1359056408 ,我得到'2013-01-24 19:40:08',为什么!?

4 个答案:

答案 0 :(得分:1)

我解决了我的问题:

SELECT UNIX_TIMESTAMP(my_timestamp_column) + TIMESTAMPDIFF(second, UTC_TIMESTAMP(), NOW())
FROM my_table
WHERE my_id_column = my_id

答案 1 :(得分:0)

我怀疑他们被设置为不同的时区。

将MySQL时间与PHP系统时间进行比较:

  SELECT NOW();

VS。

  <?php
      $date = date('Y-m-d H:i:s');
       echo $date;
他们可能会休息两小时。

答案 2 :(得分:0)

我打赌你将时间戳转换回PHP中的日期。

查看时间戳的差异:1359056408 - 1359045608 = 10800

现在除以60秒/分钟和60分钟/小时:

10800 / 60 = 180
180 / 60 = 3

这意味着您所处的时区距离UTC时间3小时。 您应该使用可以生成UTC时间戳的函数或(如果是这种情况)您应该使用“知晓”或不受时间局部问题影响的日期时间存储格式。

答案 3 :(得分:0)

如果您在数据库中使用GMT,可以通过设置将php设置为使用相同的时区 php中的date.timezone请参阅date.timezone这种方式strtotime应该使用指定的时区。