2015-04-06 168 views
-1

我已經表中定義是這樣的:不能插入unix時間戳到表的時間戳字段

CREATE TABLE tt (
    name varchar(255) DEFAULT NULL, 
    date timestamp NULL DEFAULT NULL 
) 
ENGINE = INNODB 
CHARACTER SET utf8 
COLLATE utf8_general_ci; 

現在我試圖插入一條記錄:

INSERT INTO tt (name, date) VALUES('some', UNIX_TIMESTAMP(now())); 

並得到以下錯誤:

Incorrect datetime value: '1428306271' for column 'date' at row 1 

這怎麼可能?

編輯
此選項還產生一個錯誤:

INSERT INTO tt (name, date) VALUES('some', UNIX_TIMESTAMP()); 
+0

你想在表格中插入數據的格式 – Saty 2015-04-06 07:50:13

回答

1

正確的語法是

INSERT INTO tt (name, date) VALUES('some', now()); 

date timestamp NULL DEFAULT NULL將接受值 yyyy-mm-dd H:i:s

+0

謝謝,它使用'now()',但它插入值爲'4/6/2015 10:59:33 AM'。我可以將值作爲unix時間戳插入嗎,例如'1428306271'? – 2015-04-06 08:00:47

+1

在這種情況下,數據類型應該是「int」或「varchar」。但是我會建議使用'Y-m-d H:i:s',因爲後來用範圍進行查詢,查找特定年份的數據等將比存儲整數值更簡單。 – 2015-04-06 08:03:19

+0

正確,謝謝,如果我從客戶端獲得的值是'1428306271',我可以在插入時使用'FROM_UNIXTIME1428306271',在查詢時''UNIX_TIMESTAMP(date)',對嗎?你還會建議使用'datetime'字段類型還是'timestamp'? – 2015-04-06 08:06:58

0

如果您想要hav在格式2015-04-06 13:24:42中字段中的當前日期時間,您不應該要求將此字段添加到查詢中,因爲它會自動將此格式的當前日期時間值更新爲數據庫。所以你的查詢將是:INSERT INTO tt(name)VALUES('some');

假設當前日期時間是2015-04-06 13:24:42所以這會自動更新到你的日期字段ind數據庫。

它將按照UTC時間。

+0

我不希望它自動更新 – 2015-04-06 08:02:45