由於把電腦時間隱藏了,想看時間,並且正好打開了MySQL的窗口,就使用select now();查看時間,這一看,看到了剛裝的MySQL-8的一個問題:MySQL查詢的時間和系統時間不一致。
系統時間爲:
相差8個小時,第一個想法是查看一下時區是不是不對,如圖。
系統時區是CST,中央標準時間 Central Standard Time(CST)。
什麼意思呢:
CST是美國、澳大利亞、古巴或中國的標準時間。
1、美國中部時間:Central Standard Time (USA) UT-6:00
2、澳大利亞中部時間:Central Standard Time (Australia) UT+9:30
3、中國標準時間:China Standard Time UT+8:00
4、古巴標準時間:Cuba Standard Time UT-4:00
解決方式
然後退出後重新登錄就可以了,顯示當前時間和我現在的時間一致了。
重新登錄之後,再次查看時間:
查看當前使用的時區
SELECT @@global.time_zone, @@session.time_zone;
設置 time_zone 的值的格式:
- ‘SYSTEM’ 表明使用系統時間
- 相對於 UTC 時間的偏移,比如 ‘+10:00’ 或者 ‘-6:00’
- 某個時區的名字,比如 ‘Europe/Helsinki’ , ‘US/Eastern’ 或 ‘MET’
NOW() 和 CURTIME() 的返回值都受到時區設置的影響。
注意,只有 Timestamp 數據類型的值是受時區影響的。可以理解爲, Timestamp 數據類型的實際表示使用的是 (字面值 + 時區信息)。 其它時間和日期類型,比如 Datetime/Date/Time 是不包含時區信息的,所以也不受到時區變化的影響。
mysql> create table t (ts timestamp, dt datetime);
Query OK, 0 rows affected (0.02 sec)
mysql> set @@time_zone = 'UTC';
Query OK, 0 rows affected (0.00 sec)
mysql> insert into t values ('2017-09-30 11:11:11', '2017-09-30 11:11:11');
Query OK, 1 row affected (0.00 sec)
mysql> set @@time_zone = '+8:00';
Query OK, 0 rows affected (0.00 sec)
mysql> select * from t;
+---------------------|---------------------+
| ts | dt |
+---------------------|---------------------+
| 2017-09-30 19:11:11 | 2017-09-30 11:11:11 |
+---------------------|---------------------+
1 row in set (0.00 sec)
OK~