我試圖使用phpMyAdmin SQL控制檯創建下表:創建表失敗
CREATE TABLE dates
(
id int NOT NULL,
id_date datetime NOT NULL DEFAULT CURDATE(),
PRIMARY KEY (id)
)
不過,我得到以下錯誤:
它以紅色顯示「CURDATE()」,所以我想這就是問題所在。
有人能幫我一下嗎?
我試圖使用phpMyAdmin SQL控制檯創建下表:創建表失敗
CREATE TABLE dates
(
id int NOT NULL,
id_date datetime NOT NULL DEFAULT CURDATE(),
PRIMARY KEY (id)
)
不過,我得到以下錯誤:
它以紅色顯示「CURDATE()」,所以我想這就是問題所在。
有人能幫我一下嗎?
您不能使用CURDATE()作爲默認值。
相反,您可以使用帶有DEFAULT CURRENT_TIMESTAMP的TIMESTAMP列。那麼你將不得不忽略它的時間部分。
實例的SQL代碼:
CREATE TABLE dates
(
id int NOT NULL,
id_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
INSERT INTO dates (id) VALUES (1);
SELECT id, DATE(id_date) AS id_date FROM dates;
結果:
id id_date 1 2010-09-12
你能告訴我一些SQL代碼作爲例子嗎?我非常感謝,因爲我的SQL經驗非常有限。 – Goles 2010-09-12 21:56:31
所以這個參考是不正確的? http://www.w3schools.com/sql/func_curdate.asp – user2635088 2015-10-29 07:51:06
我知道這是遲到,但是,是的w3schools.com參考是不正確的。我個人曾多次嘗試並確認它是錯誤的。另請參閱http://dev.mysql.com/doc/refman/5.5/en/create-table.html上的MySQL文檔: DEFAULT子句指定列的默認值。有一個例外,默認值必須是常數;它不能是一個函數或表達式。這意味着,例如,您不能將日期列的默認值設置爲NOW()或CURRENT_DATE等函數的值。 – AS7K 2016-02-24 15:56:57
是'id_date'應該是一個'date'或'datetime'?你命名它並使用它的方式更像是一個'date',但它被聲明爲'datetime'。 – 2010-09-12 21:53:34
我想如果這是一個日期時間,正確的功能將是NOW()正確嗎?仍然我認爲它不會與NOW()一起使用,並且保持DATETIME – Goles 2010-09-12 21:57:38
NOW()也不起作用。請參閱http://stackoverflow.com/questions/168736/how-do-you-set-a-default-value-for-a-mysql-datetime-column – 2010-09-12 23:12:03