2016-07-25 71 views
0

我需要運行下面的查詢:mysql的DATE_ADD不能與區間工作的保留字

select DATE_ADD('08:35:00', INTERVAL 5 MINUTE) from dual 

,但我得到,而不是八點40分00秒預期。我究竟做錯了什麼?

我需要使用INTERVAL x MINUTE格式,因爲數字5以後會被整數變量替換。

+0

作品:選擇DATE_ADD( '2016年11月11日8點35分00秒',間隔5分鐘), – SIDU

+0

不僅'time',而且'日期'。 – Blank

+0

可能重複的[Mysql添加12小時的時間字段](http://stackoverflow.com/questions/4840833/mysql-add-12-hours-to-a-time-field) –

回答

0

您可以嘗試使用ADDTIME而不是DATE_ADD

select ADDTIME('08:35:00.000000', '00:05:00.000000') from dual 
+0

有沒有辦法使用INTERVAL保留字? –

0

DATEADD預計第一個參數是日期或日期時間,有時間。

使用ADDTIME代替:

SELECT ADDTIME('08:35:00', '0:05:00'); 

Demo.

,你上面使用LPAD提到您可以使用此查詢與變量:

SET @a = 5; 
SELECT ADDTIME('08:35:00', CONCAT('0:', LPAD(@a, 2, '0'), ':00')); 

Demo 2.

0

我試圖執行喲您的查詢以相同的結果結束,請嘗試添加特定日期。它對我的工作很好。例如:

您可以更改日期

select DATE_ADD('2016-11-05 08:35:00', INTERVAL 5 MINUTE) as future_time from dual 

select ADDTIME('08:35:00','00:05:00')as future_time from dual 
+0

我確實想得到'08:40:00'作爲答案,而不是'2016-11-05 08:40:40'。那我該怎麼辦? –

+0

您可以使用ADDTIME函數將時間總結在一起,例如:從double @DanielCalderonMori中選擇ADDTIME('08:35:00','00:05:00')作爲future_time –

0

因爲你需要使用INTERVAL,如果你不關心日期,你可以像下面這樣做:

select time(DATE_ADD('2016-01-01 08:35:00', INTERVAL 5 MINUTE)); 

或者也許date_format是你想要什麼:

select date_format(DATE_ADD('2016-01-01 08:35:00', INTERVAL 5 MINUTE), '%H:%i:%s'); 

Demo Here

+0

這似乎完成了工作。雖然我有點擔心會引入一個可能會損壞可讀性的非常隨意的值。 –

+0

@DanielCalderonMori然後我認爲你必須使用'addtime'。 :-( – Blank