繁体   English   中英

MySQL-在到期日期前30天获取数据

[英]MySQL - Fetch data 30 days before its expiration date

我正在尝试获取过期日期在今天30天内的数据。 我尝试使用BETWEEN子句,但仍然无法正常工作。

表名注册

id               exp_date

12                05-20-2018
19                05-19-2018
34                05-22-2018

假设今天的日期是04-28-2018 我存储在变量$date_today

$date_today = '04-28-2018';
$query = "SELECT * FROM registration WHERE expiration_date BETWEEN('$date_today', DATE_SUB(expiration_date, INTERVAL 30 DAY)";
        $test =  mysqli_query($con, $query);
        $row = mysqli_fetch_assoc1( $test);

这是我得到的错误:

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given

BETWEEN不是函数,而是运算符。 语法为:

BETWEEN low_value AND high_value

您还应该停止使用变量替换,并使用带有mysqli_stmt_bind_param()预处理语句。 请参阅如何防止在PHP中进行SQL注入?

要获得未来30天内到期的所有内容,您需要:

WHERE exp_date BETWEEN CURDATE() and DATE_ADD(CURDATE(), INTERVAL 30 DAY)

请注意,此方法使用DATE_ADD() ,而不是DATE_SUB() ,因为您希望的是将来的失效日期,而不是过去的失效日期。

希望它对您有用。

DATEDIFF(d,GETDATE(),expiration_date) >= 30

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM