0

请查看以下查询:

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

如果数据库时间小于当前时间,它将增加 5 分钟。

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

我正在寻找什么,是否有任何快捷方式可以一次将多个字段添加test_minutetest_time字段中,以使其符合条件/test_time更新下一个可能的有效时间?

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

提前致谢。

4

1 回答 1

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_time 滞后,然后计算多少轮 test_minute 必须添加到其中。
  2. 将小数四舍五入。这是最重要的一点,因为这将确保生成的 test_time 大于 sysdate
  3. 将结果与 test_minute 相乘并将其添加到 test_minute。
于 2013-05-28T07:39:26.107 回答