2011-03-20 77 views
0

有誰知道是什麼問題,這個查詢:MySQL的INSERT問題

INSERT INTO match 
    (IDTeamHome, IDTeamGuest, Date) 
VALUES 
    ('15','16','20.03.2011 15:00') 

IDTeamHome和IDTeamGuest是整數,日期爲varchar。

+4

什麼是您的錯誤? – strauberry 2011-03-20 21:06:37

+4

爲什麼要在VARCHAR列中存儲日期和時間!?您發佈的內容沒有明顯的錯誤,您必須提供您遇到的錯誤才能獲得答案。 – 2011-03-20 21:21:31

回答

4

編輯:有幾個問題。

  1. 「匹配」和「日期」are keywords in MySQL。你需要在它們周圍加雙引號或反引號,以便MySQL知道它們是表或列名,例如
    INSERT INTO "match" (id1, id2, "date") VALUES ...

  2. 刪除您插入的整數值周圍的單引號。
    單引號是用於字符串。 (並非OMG Ponies在評論中指出的那樣嚴格必要)

  3. 如果您可以避免它,請不要將時間戳存儲爲VARCHAR。這將會使查詢變得更加困難,並且讓任何正在使用桌面的人都感到困惑。

+2

MySQL(以及大多數其他數據庫)基於列數據類型在這些情況下執行隱式轉換。但爲了試圖提供無法隱式轉換的數據,不依賴它是個好習慣。 – 2011-03-20 21:12:56

+0

爲什麼單引號在他的情況下不起作用?是關係到一些sql模式? – 2011-03-20 21:14:56

+0

啊,我明白了。感謝Adam。 – 2011-03-20 21:20:35

0

試着用`Date`或重命名這個領域,因爲日期是由MySQL使用的話,我想。

並刪除整數的單引號。

+0

現在是這個代碼INSERT INTO匹配(IDTeamHome,IDTeamGuest,'Datum')VALUES(11,12,'20。033. 15:00') – dzosef 2011-03-20 21:16:33

+0

並且它仍然不起作用。 Datum is varchar – dzosef 2011-03-20 21:16:54

+0

@dzosef:不要將日期存儲在'varchar'列中。 – bernie 2011-03-20 21:20:33

0

團隊的ID是Int,因此您不能使用單引號,因爲這是引用。對於字符串值,請使用以下格式:

insert into match(int,varchar(20),data) 
Values(12,'teamname','2015-11-4');