2013-02-11 55 views
0

我正在嘗試更新表中的DATETIME字段。我想要的是在它到期前總是有三個小時。如何將MySQL中的值增加到特定時間?

我當前的代碼是:

UPDATE mindcore_sessions 
    SET session_time = DATE_ADD(session_time, INTERVAL 3 HOUR) 
    WHERE session_id = '$sessionId'; 

一個實例值將是:2013-02-11 00:00:00。如果我運行此查詢,它將更改爲:2013-02-11 03:00:00。哪個是對的。 但是,如果再次運行,則更改爲2013-02-11 06:00:00等等。

我想要的是永遠是只有提前三個小時。這很難解釋,但我只是希望它保持不變,如果它再次運行。如果它在1分鐘後再次運行,我希望它只增加一分鐘。

對不起,如果問題很詳細,但我完全困惑(它已經晚了!)。

謝謝:)

+0

如果你運行你的'UPDATE'再次,那麼你最終加入3小時* *到存儲值** ...所以,如果你想保留原始值,你需要將它存儲在別處 – Barranka 2013-02-11 21:15:42

回答

3

而不是添加三(3)小時,到最後session_time,加三(3)小時NOW()

update mindcore_sessions 
set session_time = DATE_ADD(NOW(), INTERVAL 3 HOUR) 
where session_id = '$sessionId';` 
+0

謝謝大家!這就是我正在尋找的......說實話,我認爲我有一個腦筋急轉彎。我應該想到這一點。「 – Forest 2013-02-11 21:30:53

2

您的間隔添加到NOW()而不是添加到當前值:

UPDATE mindcore_sessions SET session_time = DATE_ADD(NOW(), INTERVAL 3 HOUR) WHERE session_id = '$sessionId'; 
1

有沒有辦法在mysql之前知道是否執行過相同的查詢。

唯一可能的解決方案是將原始值保存在額外的列中,並使用此列檢查值是否在過去發生了更改。

如果你想要的值要提前從現在 3個小時,你可以簡單地這樣做:

DATE_ADD(NOW(), INTERVAL 3 HOUR)

相關問題