mysql中from_unixtime()返回的数值会受配置影响

1 篇文章 0 订阅

配置文件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,所有最后将线上这一行注释,再看结果都和本地一致了。

 

所以以后发再本地是对的,程序也没问题,线上和本地代码数据表也是一样啊,怎么会有奇怪的结果?那就很可能是线上环境的配置有关系,

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值