2013-02-16 59 views
0

我正在嘗試追蹤next列未來日期未更新的錯誤。在這個SQL例子中INTERVAL的用法是否正確?

是否將INTERVAL添加到next列的用法正確?

UPDATE 
    `delay_shorts` AS `DelayShort` 
    SET 
     `DelayShort`.`delta` = 1, 
     `DelayShort`.`next` = '2002-04-14 21:31:01' + INTERVAL 5 SECOND, 
     `DelayShort`.`last_changed` = '2002-04-14 21:31:01' 
    WHERE `DelayShort`.`id` = 3 
+0

我寧願 - 對於個人理念 - 使用適當的DATE_ADD(DATE_FORMAT('2002-04-14 21:31:01','%Y-%m-%d%k:%i:%s '),INTERVAL 5 SECOND)' – Sebas 2013-02-16 21:38:24

+0

它對我有用。 – 2013-02-16 21:38:27

+1

它是有效的。 http://sqlfiddle.com/#!2/d41d8/7559 – 2013-02-16 22:21:54

回答

4

INTERVAL表達在DATE_ADDDATE_SUB功能使用:雖然您要添加5

UPDATE 
    `delay_shorts` AS `DelayShort` 
    SET 
     `DelayShort`.`next` = DATE_ADD('2002-04-14 21:31:01', INTERVAL 5 SECOND) 
    WHERE `DelayShort`.`id` = 3 

重要的是要注意,INTERVAL單位是總是以單數形式表達很重要第二個s,您表示爲5 SECOND

+0

當直接與DATE/DATETIME列一起使用時,'INTERVAL'表達式完全有效,缺少'DATE_ADD(),DATE_SUB()'。 OP的使用是有效的。 http://sqlfiddle.com/#!2/d41d8/7558 – 2013-02-16 22:20:47

+0

@MichaelBerkowski這對我來說是一個驚喜。看起來像是一個很有競爭力的答案,不是嗎? – 2013-02-16 23:49:29