2011-05-27 62 views
2

我想更新MySQL表中的很多字段,我需要更新两个字段,一个使用unix时间戳,另一个使用日期。例如,这就是我对unix时间戳的要求:Mysql更新很多字段

UPDATE `video` SET addtime= 1264982424 + (1355555555-1264982400)*RAND() 

应该随机更新addtime。但是,表中有另一个字段是adddate,它使用mysql日期。我该怎么做才能在Unix中编写一个与adddate一致的addtime?我在MySQL中是一个小菜鸟。

谢谢!

回答

2

编辑:
如果您需要跟上更新时间同步的场场ADDDATE,你可以插入这样一个触发:

CREATE TRIGGER upddate BEFORE UPDATE 
FOR EACH ROW BEGIN 
    UPDATE video SET NEW.adddate=FROM_UNIXTIME(NEW.addtime); 
END; 
+0

但是,这并不使添加时间一样ADDDATE我想,如果它不请解释我为什么:)貌似添加时间可以是任何随机数和ADDDATE可能是一个完全不同的日期比时间。 – luqita 2011-05-27 12:24:10

+0

如果我错了,请原谅我:D – luqita 2011-05-27 12:24:52

+1

@luquita:你的意思是你想用'addtime'来表示'adddate'中的时间吗?因此,您将'addtime'设置为随机值,然后创建该时间的日期表示?如果是这样,也许[from-unixtime](http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_from-unixtime)是你需要的。这似乎是一件很奇怪的事情。 – Mike 2011-05-27 12:30:21

2

这件怎么样?

UPDATE video 
SET addtime = 1264982424 + (1355555555-1264982400)*RAND(), 
    adddate = FROM_UNIXTIME(addtime) 
+0

你确定'adddate'将与新时间syncronized (在RAND和+之后)?我认为它会设置为旧的时间...请纠正我,如果我错了,请! – Marco 2011-05-27 12:56:36

+0

它会使用旧的时间,是的。这一个是不正确的。 – 2011-05-27 12:59:53

+0

@Marco它似乎工作正常5.5.12 – vbence 2011-05-27 13:14:22