将数据库标志1保持到CURDATE()+ INTERVAL 7 DAY和CURDATE()+ INTERVAL 30 DAY之间的项目到期日期

时间:2016-11-17 10:13:37

标签: php mysql

我试图保留数据库标记30dexpf = 1,直到项目的到期日期等于或等到即将到来的7天到30天之间 这是我的数据库表

30dexpf | expiry
--------|--------
0       | 2016-12-15 14:18:00
0       | 2016-12-17 14:18:00

据我所知,它可能是这样的:

$query="UPDATE user_pages
SET `30dexpf` = CASE
                WHEN (
                    DATE(expiry) = CURDATE() + INTERVAL 7 DAY
                ) THEN 1 ELSE   0 END;";

2 个答案:

答案 0 :(得分:2)

尝试使用以下查询:

UPDATE user_pages
SET 
    `30dexpf` = 1
WHERE
    DATEDIFF(expiry, CURDATE()) >= 7 AND DATEDIFF(expiry, CURDATE()) <= 30;

它将更新所有到期日为7到30天的记录。

答案 1 :(得分:0)

您可以尝试以下查询,看看它是否适合您?它现在基本上将+ 7加到下限,30加到上限,如果日期介于两者之间,则将标志设置为1.

$query="UPDATE user_pages
         SET `30dexpf` = CASE
         WHEN (
          DATE(expiry) BETWEEN 
            DATE_ADD(now(), INTERVAL 7 DAY) 
            AND DATE_ADD(now(), INTERVAL 30 DAY) 
         THEN 1 ELSE   0 END;";