如何一次添加MySQL间隔?

时间:2013-05-28 07:10:54

标签: mysql sql

请查看以下查询:

UPDATE `un_test` 
SET `test_time` = DATE_ADD(`test_time`, INTERVAL 'test_minute' MINUTE) 
WHERE deliver_at_user < NOW();

如果db time小于当前时间,则会增加5分钟。

现在,如果test_time时间超过5分钟,执行此查询后,test_time仍不符合条件。

我正在寻找的是,如果有任何快捷方式可以同时将test_minute的多个test_time字段添加到test_time字段,以便它符合下一个可能更新的条件/ {{1}}有效时间?

我正在寻找SQL查询级别的解决方案,并且不想为此编写PHP脚本。

提前致谢。

1 个答案:

答案 0 :(得分:1)

update un_test
set test_time = date_add(test_time, interval 
    cast(ceiling(timestampdiff(minute, test_time, now())/test_minute) 
    * test_minute as int) minute)
where deliver_at_user < now()

这应该或多或少有用。 :d

接下来的逻辑就是这个

  1. 计算测试时间滞后的程度,然后计算需要添加多少次test_minute。
  2. 向上舍入小数。这是最重要的一点,因为这将确保生成的test_time超过sysdate
  3. 将结果与test_minute相乘并将其添加到test_minute。