在MySQL中,我們可以使用DEFAULT
關鍵字來為某個字段設置默認值。如果我們為時間類型的字段設置默認值,那么MySQL會自動將其轉換為時間戳。
例如,我們可以使用下面的SQL語句為一個表添加一個時間類型的字段并設置默認值:
CREATE TABLE test ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id) );
在這個例子中,我們為created_at
字段設置了默認值為CURRENT_TIMESTAMP
,這個值表示當前時間戳。
但是,在實際使用中,我們可能會遇到一些問題。例如,下面這個例子:
CREATE TABLE test ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL, created_at TIMESTAMP DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (id) );
在這個例子中,我們為created_at
字段設置了一個無效的默認值0000-00-00 00:00:00
。當我們嘗試插入一條記錄時,會得到一個錯誤:
ERROR 1292 (22007): Incorrect datetime value: '0000-00-00 00:00:00' for column 'created_at' at row 1
這是因為MySQL不允許存儲無效的日期時間值。
雖然我們可以通過更改MySQL的配置來允許存儲無效的日期時間值,但是這并不是一個好的解決方法。更好的解決方法是使用合法的時間戳來代替無效的默認值。例如,我們可以使用下面的語句:
CREATE TABLE test ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL, created_at TIMESTAMP DEFAULT '1970-01-01 00:00:01', PRIMARY KEY (id) );
在這個例子中,我們為created_at
字段設置了一個合法的時間戳,默認值為1970-01-01 00:00:01
,也就是UNIX時間戳的起始時間。這樣做的好處是可以避免存儲無效的日期時間值,并且可以方便地進行時間戳轉換。
上一篇mysql無序id
下一篇mysql無法保存中文