2013-05-22 40 views
1

我有一個數據庫表,其中包含每個記錄的時間戳。每天這個數據庫都會被一個cron更新,該cron被設置爲在gmt午夜(23:59:00)之前1分鐘運行。我們正在將cron更改爲現在午夜(00:00:00)運行,因此我需要更新在第二天23:59到00:00記錄的所有字段(2013-05-21 23:59 :00應更新至2013-05-22 00:00:00)。將時間添加到數據庫中具有特定時間戳的行

更新腳本被設置爲捕獲腳本啓動時的時間戳,但由於寫得不好,所以沒有記錄秒,所以有些記錄的啓動時間爲2013-05-21 23:59:01,有些可能有2013-05-20 23:59:02甚至2013-05-19 23:59:03。所有這些都需要更新到第二天的00:00:00。

有成千上萬的記錄沒有被cron更新,因此有隨機的時間戳。 這些記錄需要不受影響。例如2013-05-19 23:13:47,2013-05-19 02:50:56和2013-05-19 16:42:13都應該保持不變。

我認爲從this post下面的代碼是有點沿着我所尋找的線,但一些谷歌搜索和測試自己後,我沒有太多的運氣。

UPDATE table 
SET `time` = CASE 
       WHEN CURRENT_TIMESTAMP>='23:59:00' 
       THEN CURRENT_TIMESTAMP + INTERVAL 1 MINUTE 
       ELSE CURRENT_TIMESTAMP END 
+0

的時間可以'23:59:15' ? – Devart

+0

隨着23:59:xx的任何時間都可以安全地更新到午夜,但我認爲我發現運行的最新cron發生在23:59:04,如果它很重要。 –

+0

是的,它很重要。 – Devart

回答

1

嘗試此查詢 -

UPDATE 
    table 
SET 
    `time` = DATE(`time`) + INTERVAL 1 DAY 
WHERE 
    TIME(`time`) >= '23:59:00' 
+0

工作出色!非常聰明,謝謝。 –