如果行的时间比现在长 5 分钟或更长,则更新 SQL
Update SQL if row's time is 5 minutes or longer than now
我想更新 SQL 其中行的时间是 5 分钟前(或超过 5 分钟):
UPDATE mytable SET status='EXPIRED'
WHERE (a column's time is 5 minutes or longer before now)
我尝试使用 DATE_ADD(NOW(), INTERVAL 5 MINUTE)
但我没有成功!
不确定,但考虑到您的时间列属于 DATETIME
,您可以使用如下所示的 BETWEEN
运算符
UPDATE mytable SET status='EXPIRED'
WHERE your_time_column BETWEEN DATE_ADD(NOW(), INTERVAL -5 MINUTE) AND DATE_ADD(NOW(), INTERVAL 5 MINUTE)
您可以将 now()
与行的日期列加 5 分钟进行比较:
UPDATE mytable
SET status = 'EXPIRED'
WHERE DATE_ADD(date_col, INTERVAL 5 MINUTE) <= NOW()
典型的方法是使用 date_sub()
:
UPDATE mytable
SET status = 'EXPIRED'
WHERE <columntime> < date_sub(now(), interval 5 minute);
您也可以使用带有负数单位的 date_add()
。此外,您应该将函数调用放在 now()
而不是列上,这样 MySQL 可以在适当的情况下利用列上的索引。
我想更新 SQL 其中行的时间是 5 分钟前(或超过 5 分钟):
UPDATE mytable SET status='EXPIRED'
WHERE (a column's time is 5 minutes or longer before now)
我尝试使用 DATE_ADD(NOW(), INTERVAL 5 MINUTE)
但我没有成功!
不确定,但考虑到您的时间列属于 DATETIME
,您可以使用如下所示的 BETWEEN
运算符
UPDATE mytable SET status='EXPIRED'
WHERE your_time_column BETWEEN DATE_ADD(NOW(), INTERVAL -5 MINUTE) AND DATE_ADD(NOW(), INTERVAL 5 MINUTE)
您可以将 now()
与行的日期列加 5 分钟进行比较:
UPDATE mytable
SET status = 'EXPIRED'
WHERE DATE_ADD(date_col, INTERVAL 5 MINUTE) <= NOW()
典型的方法是使用 date_sub()
:
UPDATE mytable
SET status = 'EXPIRED'
WHERE <columntime> < date_sub(now(), interval 5 minute);
您也可以使用带有负数单位的 date_add()
。此外,您应该将函数调用放在 now()
而不是列上,这样 MySQL 可以在适当的情况下利用列上的索引。