2010-09-12 199 views
16

我試圖使用phpMyAdmin SQL控制檯創建下表:創建表失敗

CREATE TABLE dates 
(
id int NOT NULL, 
id_date datetime NOT NULL DEFAULT CURDATE(), 
PRIMARY KEY (id) 
) 

不過,我得到以下錯誤: alt text

它以紅色顯示「CURDATE()」,所以我想這就是問題所在。

有人能幫我一下嗎?

+0

是'id_date'應該是一個'date'或'datetime'?你命名它並使用它的方式更像是一個'date',但它被聲明爲'datetime'。 – 2010-09-12 21:53:34

+0

我想如果這是一個日期時間,正確的功能將是NOW()正確嗎?仍然我認爲它不會與NOW()一起使用,並且保持DATETIME – Goles 2010-09-12 21:57:38

+0

NOW()也不起作用。請參閱http://stackoverflow.com/questions/168736/how-do-you-set-a-default-value-for-a-mysql-datetime-column – 2010-09-12 23:12:03

回答

24

您不能使用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 
+0

你能告訴我一些SQL代碼作爲例子嗎?我非常感謝,因爲我的SQL經驗非常有限。 – Goles 2010-09-12 21:56:31

+1

所以這個參考是不正確的? http://www.w3schools.com/sql/func_curdate.asp – user2635088 2015-10-29 07:51:06

+2

我知道這是遲到,但是,是的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