Mysql

MySQL 將 UTC 時間設置為預設時間戳

  • November 23, 2020

如何設置預設值為目前 UTC 時間的時間戳列?

MySQLUTC_TIMESTAMP()對 UTC 時間戳使用函式:

mysql> SELECT UTC_TIMESTAMP();
+---------------------+
| UTC_TIMESTAMP()     |
+---------------------+
| 2012-07-01 11:36:35 |
+---------------------+
1 row in set (0.00 sec)

所以我試過:

CREATE TABLE `blah` (
`creation_time` TIMESTAMP DEFAULT UTC_TIMESTAMP,
...

和其他變體,如UTC_TIMESTAMP(),但沒有成功。

要與CURRENT_TIMESTAMP儲存為 UTC 但檢索為目前時區的 @ypercube 註釋一起使用,您可以使用–default_time_zone檢索選項影響伺服器的時區設置。這使您的檢索始終採用 UTC。

預設情況下,選項是“SYSTEM”,這是您的系統時區的設置方式(可能是也可能不是 UTC!):

mysql> SELECT @@global.time_zone, @@session.time_zone;
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+
| SYSTEM             | SYSTEM              |
+--------------------+---------------------+
1 row in set (0.00 sec)

mysql> SELECT CURRENT_TIMESTAMP();
+---------------------+
| CURRENT_TIMESTAMP() |
+---------------------+
| 2012-09-25 16:28:45 |
+---------------------+
1 row in set (0.00 sec)

您可以動態設置:

mysql> SET @@session.time_zone='+00:00';
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @@global.time_zone, @@session.time_zone;
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+
| SYSTEM             | +00:00              |
+--------------------+---------------------+
1 row in set (0.00 sec)

或永久保存在您的 my.cnf 中:

[mysqld]
**other variables**
default_time_zone='+00:00'

重新啟動伺服器,您將看到更改:

mysql> SELECT @@global.time_zone, @@session.time_zone;
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+
| +00:00             | +00:00              |
+--------------------+---------------------+
1 row in set (0.00 sec)

mysql> SELECT CURRENT_TIMESTAMP();
+---------------------+
| CURRENT_TIMESTAMP() |
+---------------------+
| 2012-09-25 20:27:50 |
+---------------------+
1 row in set (0.01 sec)

引用自:https://dba.stackexchange.com/questions/20217