我正在尝试构建一个可以在日期时间戳中添加/减去秒数的查询。
这是我目前的
UPDATE `table`
SET end_dt = DATE_ADD(end_dt, INTERVAL (15 - TIMESTAMPDIFF(SECOND, NOW(), end_dt)) SECOND)
WHERE DATE_SUB(end_dt, INTERVAL 15 second) <= NOW()
基本上是将日期时间重置为距离当前时间仅剩15秒(如果不到15秒)。
我想添加一个IF条件,如果基于'end_dt'剩下超过15秒,它只会增加一秒。
答案 0 :(得分:1)
使用MySQL的IF函数。
UPDATE `table` SET end_dt =
IF(end_dt > DATE_ADD(NOW(),INTERVAL 15 second),
DATE_ADD(NOW(), INTERVAL 1 SECOND),
DATE_ADD(NOW(), INTERVAL 15 SECOND))
WHERE end_dt >= NOW()
我在WHERE子句的一半上隔离了end_dt,因此如果存在,则可以使用end_dt上的索引。
您的意思是更新所有行吗?
答案 1 :(得分:0)
将其拆分为两个更新查询,一个用于您想要的IF语句的每个分支。
答案 2 :(得分:0)
我不确定我理解这个问题,但这是一个镜头:
UPDATE `table`
SET end_dt = IF(end_dt = 15,
DATE_ADD(end_dt, INTERVAL (15 - TIMESTAMPDIFF(SECOND, NOW(), end_dt)) SECOND),
end_dt)
WHERE DATE_SUB(end_dt, INTERVAL 15 second) <= NOW()
这说,“如果end_dt为15,则添加内容,否则保持不变。”我确定“end_dt = 15”不是你想做的比较,但这可能会告诉你你需要做什么。