1. 程式人生 > >mysql上的時間取出來後與資料庫儲存的時間對不上

mysql上的時間取出來後與資料庫儲存的時間對不上

解決辦法:

將centos下時區都設定好  cst 時區  

然後修改mysql資料庫

可以參考http://www.jb51.net/article/84198.htm 這篇文章 

方法一:通過mysql命令列模式下動態修改

1.1 檢視mysql當前時間,當前時區

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 > select curtime();  #或select now()也可以 +-----------+ | curtime() | +-----------+ | 15:18:10 | +
-----------+ > show variables like "%time_zone%"; +------------------+--------+ | Variable_name  | Value | +------------------+--------+ | system_time_zone | CST  | | time_zone    | SYSTEM | +------------------+--------+ 2 rows in set (0.00 sec) #time_zone說明mysql使用system的時區,system_time_zone說明system使用CST時區

1.2 修改時區

?
1 2 3 > set global time_zone = '+8:00'; ##修改mysql全域性時區為北京時間,即我們所在的東8區 > set time_zone = '+8:00'; ##修改當前會話時區 > flush privileges; #立即生效

方法二:通過修改my.cnf配置檔案來修改時區

?
1 2 3 # vim /etc/my.cnf ##在[mysqld]區域中加上 default-time_zone = '+8:00' # /etc/init.d/mysqld restart ##重啟mysql使新時區生效

方法三:如果不方便重啟mysql,又想臨時解決時區問題,可以通過php或其他語言在初始化mysql時初始化mysql時區

這裡,以php為例,在mysql_connect()下使用:

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

這樣可以在保證你不重啟的情況下改變時區。但是mysql的某些系統函式還是不能用如:now()。這句,還是不能理解。