2011-05-27 100 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