场景:
数据库
表A
中有一个time
字段保存的是php time()生成的时间戳
mysql使用的
时区
未知
php sql语句用到了
FROM_UNIXTIME(time,'%w')
问题:
业务程序中需要
切换很多时区
处理数据,虽然php可以动态设置时区,但是Mysql的FROM_UNIXTIME(time,'%w')
执行时区不会被动态设置。问题是这种情况怎么解决,百度了一圈,发现几个解决办法,但是有几个瓶颈导致百度到的发方法不可用:(1) 业务代码中不可新建连接数据库,根据时区差 通过
mysql_query(set xxx)
设置加减几个小时;(2)有人可能提出先查询数据再处理
,这是最坏的打算。
time()生成的时间戳与时区无关
你可以用PHP处理完不同时区的%w再去数据库查询。不要吧计算放在数据库