在CURDATE() + INTERVAL 7天和CURDATE() + INTERVAL 30天之间保持数据库标志1


keep database flag 1 until item expiry date between in CURDATE() + INTERVAL 7 DAY AND CURDATE() + INTERVAL 30 DAY

我试图保持数据库标志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;";

试试下面的查询:

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

将更新有效期在当前日期7至30天之间的所有记录。

您可以尝试下面的查询,看看它是否适用于您?它现在基本上将+ 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;";