我将事件存储在MySQL数据库中,其开始日期和时间以UNIX格式存储在“startTimeStamp”列中。
当我尝试使用简单查询获取特定日期的事件时
SELECT * FROM events
WHERE FROM_UNIXTIME(startTimeStamp
,'%Y-%m-%d')='2013-08-20'
当时间戳下的日期和时间大于2AM(即2013-08-20 03:00:00)时,一切正常,但是当它早些时候没有在同一天显示。
快速示例:我有两个事件 - 相同的日期但不同的时间
- 2013-08-20 03:00:00(1376960400)
- 2013-08-20 00:00:00(1376949600)
醇>
当我运行前面提到的查询时,我会得到第一个,但不是第二个。要获得第二个,我必须查询前一天(2013-08-19)的事件
你知道为什么吗?也许我错过了什么?
非常感谢!
答案 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)