2012-02-22 93 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