MySQL 使用的时区问题

尽量保证时区和预期的时区一致, 不然很容易有时间超时之类的问题。
mysql

1 方法一:通过 mysql 命令行模式下动态修改

1 查看 mysql 当前时间,当前时区**

> select curtime();  #或select now()也可以
+-----------+
| curtime() |
+-----------+
| 15:18:10 |
+-----------+
> show variables like "%time_zone%";
+------------------+--------+
| Variablename  | Value |
+------------------+--------+
| system_time_zone | CST  |
| time_zone    | SYSTEM |
+------------------+--------+
2 rows in set (0.00 sec) 

time_zone 说明 mysql 使用 system 的时区,system_time_zone 说明 system 使用 CST 时区

2 修改时区**

> set global timezone = '+8:00'; ##修改mysql全局时区为北京时间,即我们所在的东8区
> set timezone = '+8:00'; ##修改当前会话时区
> flush privileges; #立即生效 

2 方法二:通过修改 my.cnf 配置文件来修改时区

 vim /etc/my.cnf ##在[mysqld]区域中加上
default-time_zone = '+8:00'
 /etc/init.d/mysqld restart ##重启mysql使新时区生效 

3 方法三:如果不方便重启 mysql,又想临时解决时区问题,可以通过 php 或其他语言在初始化 mysql 时初始化 mysql 时区

这里,以 php 为例,在 mysql_connect()下使用:

mysql_query("SET time_zone = '+8:00'")