MySQL时区问题
MySQL时区问题是一个常见的问题,可能导致在业务处理中出现不可预知的错误。其实很多用户并不知道,MySQL中默认时区是UTC(协调世界时)标准时间,而不是中国东八区的北京时间。
产生的问题是什么?
由于MySQL默认时区与北京时间相差8个小时,因此在业务处理中,如果使用了中国标准时间而非UTC标准时间,可能会引发一系列问题,例如:
数据插入/更新的时间不是当前时间查询数据时,时间不符合用户的预期特殊时刻(例如夏令时)会造成时间偏差解决方法
解决MySQL时区问题有多种方法:
在数据库连接时指定时区,例如使用PDO连接数据库时可以设置PDO::MYSQL_ATTR_INIT_COMMAND指令;在MySQL配置文件(my.cnf或my.ini)中增加如下内容以设置全局时区:[mysqld] default-time-zone='+8:00'在SQL语句中显式设置时区,例如SELECT CONVERT_TZ(‘2019-09-05 12:00:00’,’+00:00′,’+08:00′);