2016-09-30 49 views
1

我是新的mysql,已經在時間字段值,我想使用查詢更新額外的5分鐘時間字段。我嘗試了很多東西,但沒有工作。如何在mysql中添加額外的5分鐘使用查詢

這裏我的查詢:

UPDATE STUDENT SET START_TIME = ADDTIME(START_TIME, 500) WHERE ID = 1; 

上面的查詢工作,但一個問題是有沒有,如果有23:55:00我的領域。 我希望在執行查詢00:00:00後得到結果,但它會在24:00:00更新。

任何人都可以幫助我!

在此先感謝!

+0

什麼類型是'START_TIME'列? –

+0

@TimBiegeleisen時間類型 – Abdul

回答

0

這有點棘手,因爲你只有時間,並且你想要它在24小時後回零。我的方法是從START_DATE中提取秒數,增加5分鐘,然後以24小時爲單位將該模式換成零,如果超過一天的秒數。

UPDATE STUDENT 
SET START_TIME = CAST(STR_TO_DATE(CAST(MOD((TIME_TO_SEC(START_TIME) + 300), 86400) AS CHAR(5)), '%s') AS TIME) 
WHERE ID = 1 

在下面的演示中,你可以看到在正確轉換23:55:00五分鐘內將成爲00:00:00行動的邏輯。

SQLFiddle

然而,在你的情況下,最簡單的解決方案可能是隻使用一個DATETIME而忽略日期部分。然後時間應該自動換到新的一天。

+0

它不能很好地工作 – Abdul

+0

'它不能很好地工作...... ...這不讓我幫你 –

0

select addtime('23:55:00','00:06:00');

輸出 - 24:01:00(在理想情況下它是正確的,因爲時間數據類型僅代表時間,如果將它轉換爲00:01:00然後時間分量失去24小時,這是錯誤的)

選擇添加時間( '2016-09-01 23:55:00','00:06:00');

輸出 - 2016年9月2日00:01:00(在這種情況下,24小時在日期被添加所以時間分量被表示爲00:01:00)

如果要求得到它作爲00:01:00然後這裏是解決方法 -

SELECT TIME((ADDTIME(TIME('23:59:59'),TIME('02:00:00')))%(TIME(' 24:00:00' )));

參考 -

ADDTIME() return 24 hour time

相關問題