MySQL 时区默认是服务器的时区。
可以通过以下命令查看

mysql> SHOW VARIABLES LIKE '%time_zone%';
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | CST |
| time_zone | SYSTEM |
+------------------+--------+
2 rows IN SET (0.00 sec)

可以通过修改my.cnf, 在 [mysqld] 之下加来修改时区。

default-time-zone=timezone
例如:
default-time-zone='+8:00'

改了记得重启msyql.
注意一定要在 [mysqld] 之下加 ,否则会出现错误: unknown variable ‘default-time-zone=+8:00′

另外也可以通过命令

SET time_zone=timezone
例如:比如北京时间(GMT+0800)
SET time_zone='+8:00'

这个和php的时区设置又有点差别,比如北京时间在php中是

date_default_timezone_set('Etc/GMT-8');

美国pst时间(GMT-08:00)

SET time_zone = '-8:00';
mysql> SET time_zone = '+8:00';
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT now();
+---------------------+
| now() |
+---------------------+
| 2008-12-29 11:26:36 |
+---------------------+
1 row IN SET (0.00 sec)
mysql> SET time_zone = '-8:00';
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT now();
+---------------------+
| now() |
+---------------------+
| 2008-12-28 19:27:09 |
+---------------------+
1 row IN SET (0.00 sec)

原文来自,冰山上的播客,http://xinsync.xju.edu.cn/index.php/archives/6842,略作修改。