Home > Article > Backend Development > mysql里面int类型时间字段为什么相差8小时的问题
我在供应商的客户端软件查看各条记录的时间都是正常的,但我直接在后台使用SQLyog查阅,发现自己查询出来的时间字段总是慢了8小时,请问是什么问题呢?
我使用以下语句,出来格式是 2013-05-25th 01:37:08,其实该条记录正确的时间是 2013-05-25th 09:37:08
SELECT DATE_FORMAT(FROM_UNIXTIME(`table`.`time`),'%Y-%m-%D %h:%i:%s') AS `theTime` FROM table
与你服务器的时区设置有关
但供应商的客户端软件看是没有问题的。
如果确实没有办法,在mysql里面怎么把当前时间 加上 8小时,然后再把 int类型的时间字段以 2013-05-25th 01:37:08 的格式展示出来。
MySQL服务器有几个时区设置:
· 系统时区。服务器启动时便试图确定主机的时区,用它来设置system_time_zone系统变量。
· 服务器当前的时区。全局系统变量time_zone表示服务器当前使用的时区。初使值为'SYSTEM',说明服务器时区与系统时区相同。可以用--default-time-zone=timez选项显式指定初使值。如果你有SUPER 权限,可以用下面的语句在运行时设置全局变量值:
· mysql> SET GLOBAL time_zone = timezone;
· 每个连接的时区。每个客户端连接有自己的时区设置,用会话time_zone变量给出。其初使值与全局变量time_zone相同,但可以用下面的语句重设:
· mysql> SET time_zone = timezone;
可以用下面的方法查询当前的全局变量值和每个连接的时区:
mysql> SELECT @@global.time_zone, @@session.time_zone;
timezone值为字符串,表示UTC的偏移量,例如'+10:00'或'-6:00'。如果已经创建并装入mysql数据库中的时区相关表,你还可以使用命名的时区,例如'Europe/Helsinki'、'US/Eastern'或'MET'。值'SYSTEM'说明该时区应与系统时区相同。时区名对大小写不敏感。
SELECT @@global.time_zone, @@session.time_zone
两个字段都是显示 system