2012-06-18 39 views
0

當我插入代碼的是我得到空獲取NULL值TIMEDATE

INSERT INTO dates VALUES (date='12-11-20 11:30:11'); 

當我火查詢

SELECT * FROM dates; 

我得到

|dates | 
| NULL | 
+0

更改值格式爲yyyy-mm-dd hh:mm:ss – adatapost

+6

學習插入查詢google它 –

+1

是'VALUES(date ='...')'在MySQL中實際有效的語法? – ThiefMaster

回答

4
INSERT INTO dates (date) VALUES('12-11-20 11:30:11') 
3

你的語法錯了。

正確的語法如下所示。

INSERT INTO dates (dates) VALUES ('12-11-20 11:30:11'); 
2

您的INSERT查詢是錯誤的。使用以下語法之一:

INSERT INTO dates (date) VALUES ('12-11-20 11:30:11') 
INSERT INTO dates SET date = '12-11-20 11:30:11' 

第一個是較好的,因爲在所有的數據庫的工作,而後者則是最有可能不是標準的SQL。

您還應該考慮使用2012-11-20而不是12-11-20。我們都知道12年前發生的事情是由於沒有使用4位數年份的人。

0

那麼,這裏有幾個有趣的問題需要注意。

首先,在我看來明確聲明將要更新的字段更安全:否則查詢在表結構更改後變得不可用。建議不要在表格的字段和表格中使用相同的名稱:稍後可能會使您感到困惑。

其次,你的DATETIME文字實際上是OK的MySQL的 - 它接受兩個數字的一​​年,通過特定規則解析它:

Year values in the range 70-99 are converted to 1970-1999. 
Year values in the range 00-69 are converted to 2000-2069. 

所以,你仍然可以使用'12 -11-20' 語法......如果再一次,不會讓後來維護腳本的人感到困惑(甚至是你,也許......))。

最後,INSERT表達式可以在VALUES子句中使用任何有效的表達式。在你的情況下,它是date = '...'表達式,它被評估爲NULL;這就是爲什麼NULL被插入到你的表中。如果你卻希望僅插入DATETIME文字(你可能做的),刪除任務標記(這實際上是作爲「平等運營商)和簡單的使用...

INSERT INTO dates (datetime_field) VALUES ('2012-11-20 12:12:12'); 

...或本,如果你想用一個單一的查詢插入幾行:

INSERT INTO dates (datetime_field) VALUES ('2012-11-20 12:12:12'), ('2012-11-20 13:13:13'); 

希望這有助於。 )但是,即使你沒有任何問題,我仍然建議你學習Insert syntaxDate and time literals主題 - 這將有所幫助。