2013-02-16 63 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