Mysql
MySQL 將 UTC 時間設置為預設時間戳
如何設置預設值為目前 UTC 時間的時間戳列?
MySQL
UTC_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)