2012-12-24 61 views
3

我在我的表中有一個名爲updated_date的'timestamp'類型列。向列添加列時,所有行都更新到相同的updated_date。我們還在測試中,這不是一場災難,但它破壞了我們網站的功能(按照updated_date的順序顯示)。mysql,需要隨機更新列

有什麼辦法可以將列中的所有updated_date值(但id低於x)更改爲某個隨機日期(或增量日期)?

在此先感謝!

+1

讓他誰沒有''更新''沒有'哪裏'投第一塊石頭:) – SWeko

回答

2

這可能會解決你的問題:

UPDATE updated_table SET timestamp = FROM_UNIXTIME(1e9 + id) WHERE id < x; 

基本上它設置日期以相當於1十億+ ID(1,000,000,000 UNIX時間戳是2001年9月8日21時46分四十○秒)的Unix時間戳。這樣你就可以按照ID的順序獲得獨特的時間戳。

+0

如果他想從任何其他日期開始日期,那麼他也可以按照自己的意願計算出發時間,但這樣看起來會很有趣,因爲我認爲在不到一天的時間內就會發布100,000個帖子。 –

+0

同意,你可以使用id * 60將它們設置爲相隔一分鐘或其他重要的東西,或者用其他日期替換1e9。不知道更多關於OP是如何完成的,我認爲最好提供一個簡單的解決方案,讓他可以調整以適應他的需求。 –

+0

非常好點的先生 –

0

時間戳只是自紀元(1970-01-01 00:00:01)以來的秒數。如果您從基本時間戳開始,則可以添加自該數字開始的隨機數字,並且您有隨機日期。

2

嗯,你可以做到這一點

UPDATE table SET updated_time = NOW() WHERE id < x 

鑑於ID屬於表

的情況下,你從過去

UPDATE test2 SET update_time = NOW() - interval rand()*120 day - interval rand()*36000 second WHERE id < x 

想一些隨機數據它融合到你的需求