配置文件my.ini中可能会有时区配置,影响此from_unixtime()结果,从而查询结果对应不上。
如果将提交的日期转为时间戳strtotime(“日期”),再比较数据库中保存的时间戳就不会有问题了,但假如你还非要用from_unixtime()就会有问题了。
最近发现前台提交一个日期参数:2018-11-15,数据库保存的是时间戳,用from_unixtime(),返回值只要是2018-11-15的都应该查出来。可是发现返回值却是2018-11-14,这样想要搜索15号的数据,反而还要前台提交14号才对。
将时间戳拿出来 ,对比返回结果,本地确实是 2018-11-15 00:00:00 ,但在生产返回却是 2018-11-14 15:59:36,奇怪啊,相当于差了8小时,但又差一点。一想php配置文件有时区相关配置,我已经配置为了PRC,没问题啊,那数据库是不是也有自己的时区配置,所以才导致的这个不同结果呢?
在mysql 黑窗口执行 show variables like "%time_zone%" ;果然发现值是UTC。本地值是 SYSTEM。
查看本地的my.ini配置没有发现时区配置,线上的my.ini有个default-time-zone=UTC,所有最后将线上这一行注释,再看结果都和本地一致了。