php、mysql时区问题
怪我咯
怪我咯 2017-04-11 10:35:54
0
3
352

场景:

  1. 数据库表A中有一个time字段保存的是php time()生成的时间戳

  2. mysql使用的时区 未知

  3. php sql语句用到了 FROM_UNIXTIME(time,'%w')

问题:

  1. 业务程序中需要切换很多时区处理数据,虽然php可以动态设置时区,但是Mysql的FROM_UNIXTIME(time,'%w')执行时区不会被动态设置。

  2. 问题是这种情况怎么解决,百度了一圈,发现几个解决办法,但是有几个瓶颈导致百度到的发方法不可用:(1) 业务代码中不可新建连接数据库,根据时区差 通过mysql_query(set xxx) 设置加减几个小时;(2)有人可能提出先查询数据再处理,这是最坏的打算。

怪我咯
怪我咯

走同样的路,发现不同的人生

Antworte allen(3)
巴扎黑

time()生成的时间戳与时区无关

你可以用PHP处理完不同时区的%w再去数据库查询。不要吧计算放在数据库

巴扎黑

你往数据库中插入的时候可不可以判断下当前时区,存表的时候将时区一起存储

黄舟

自己找到一个解决方案是: 数据库使用的是UTC时间,因此可以计算出处理数据的时区与UTC时区的时间差,由此在PHP 的sql 中 在FROM_UNIXTIME() 通过加减时间差得出正确的时区时间

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!