如果行的时间比现在长5分钟或更长,则更新SQL

时间:2015-08-03 21:13:35

标签: mysql sql date time sql-update

我想更新行的时间是5分钟前(或超过5分钟)的SQL:

UPDATE mytable SET status='EXPIRED' 
WHERE (a column's time is 5 minutes or longer before now)

我尝试使用DATE_ADD(NOW(), INTERVAL 5 MINUTE),但我没有运气!

3 个答案:

答案 0 :(得分:1)

不确定,但考虑到您的时间列属于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)

答案 1 :(得分:1)

您可以将now()与行的日期列加5分钟进行比较:

UPDATE mytable 
SET    status = 'EXPIRED' 
WHERE  DATE_ADD(date_col, INTERVAL 5 MINUTE) <= NOW()

答案 2 :(得分:1)

一种典型的方法是使用sizeof(std::size_t): 8 ofstream on "c:/4294967294.tst" size 4294967294 is_open: true good: true bad: false eof: false fail: false error: No error lastError: "" ofstream on "c:/4294967295.tst" size 4294967295 is_open: false good: false bad: false eof: false fail: true error: No error lastError: "" ofstream on "c:/4294967294.tst" size 4294967294 is_open: true good: true bad: false eof: false fail: false error: No error lastError: "" ofstream on "c:/4294967295.tst" size 4294967295 is_open: true good: true bad: false eof: false fail: false error: No error lastError: ""

date_sub()

您也可以使用负数单位的UPDATE mytable SET status = 'EXPIRED' WHERE <columntime> < date_sub(now(), interval 5 minute); 。此外,您应该将函数调用放在date_add()而不是列上,这样MySQL就可以利用列上的索引(如果适用)。