如果行的时间比现在长 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 可以在适当的情况下利用列上的索引。