MySQL时间戳 - 正确的日子

时间:2013-08-19 11:11:44

标签: php mysql timestamp

我将事件存储在MySQL数据库中,其开始日期和时间以UNIX格式存储在“startTimeStamp”列中。

当我尝试使用简单查询获取特定日期的事件时

SELECT * FROM events WHERE FROM_UNIXTIME(startTimeStamp,'%Y-%m-%d')='2013-08-20'

当时间戳下的日期和时间大于2AM(即2013-08-20 03:00:00)时,一切正常,但是当它早些时候没有在同一天显示。

快速示例:我有两个事件 - 相同的日期但不同的时间

  
      
  1. 2013-08-20 03:00:00(1376960400)
  2.   
  3. 2013-08-20 00:00:00(1376949600)
  4.   

当我运行前面提到的查询时,我会得到第一个,但不是第二个。要获得第二个,我必须查询前一天(2013-08-19)的事件

你知道为什么吗?也许我错过了什么?

非常感谢!

4 个答案:

答案 0 :(得分:0)

查看您的时区是什么:

SELECT @@global.time_zone, @@session.time_zone;

然后正确设置:

SET time_zone = timezonename;

编辑: 这可能会有所帮助:MySQL datetime fields and daylight savings time -- how do I reference the "extra" hour?

答案 1 :(得分:0)

我认为您可能选择了daylight saving time适用的地方。在这种情况下,时间转移主要在凌晨2点到凌晨3点之间完成,这可能导致不同的日子。

答案 2 :(得分:0)

这基本上是因为Unix时间戳的含义。这只是1-1-1970的秒数,所以技术上1376949600的值仍然可能是前一天,取决于你的时区。

就我而言:

echo date("d-m-Y h:i", 1376949600);
// output: 19-08-2013 11:00

答案 3 :(得分:0)

像这样使用:

$d="1376960400";
echo date("Y-m-d",$d);

您可以使用this link

中所需的格式