mysql上的時間取出來後與資料庫儲存的時間對不上
阿新 • • 發佈:2019-02-10
解決辦法:
將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()。這句,還是不能理解。