2012-02-22 162 views
1

我不知道標題是否清楚,但我會在這裏嘗試解釋它。我們的數據庫有數千條記錄,這些表中有幾個日期時間列。我們必須使用unix_timestamp移動到int,但我無法弄清楚MySQL中會更新這些字段的查詢。用當前行值更新多行mysql

比方說,我有一個簡單的表,這樣的一個領域:

user_table : 
    id : int, 
    name : string, 
    date_joined : datetime; 

要改變所有這些date_joined申請到INT我以爲加入INT列和複製日期爲INT到新然後放下舊列並重新命名我的新列可能是一個解決方案。我建立了一個小小的PHP腳本,然後我的腳本會做出數千次的MySQL查詢,這個查詢很長。我的腳本將運行像查詢:

UPDATE user_table SET date_joined_int=UNIX_TIMESTAMP(date_joined) where id = 1 
... 

這可能與一個MySQL查詢做到這一點?

回答

0

你的權利,你應該添加新INT

ALTER TABLE user_table ADD date_joined_int INT(11) not null; 

比轉換日期

UPDATE user_table SET date_joined_int = UNIX_TIMESTAMP(date_joined); 

最後刪除date_joined列,remane date_joined_intdate_joined

0

你太親近了。只需刪除WHERE子句即可更新單個查詢中的所有行。

UPDATE user_table 
    SET date_joined_int = UNIX_TIMESTAMP(date_joined) 
0

如果刪除WHERE子句,UPDATE將被應用到表中的所有行。

UPDATE user_table SET date_joined_int=UNIX_TIMESTAMP(date_joined) 
+0

是這樣的嚴重? hahahahaha,讓我試試吧 – David 2012-02-22 15:13:02

+0

如果您認爲這很有趣,只需嘗試一個沒有'WHERE'子句的'DELETE'。 *邪惡的笑容* – 2012-02-22 15:15:11