mysql-fetch数据在到期日前30天

7cwmlq89  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(305)

我正在尝试获取过期日期在今天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

rjee0c15

rjee0c151#

我希望它对你有用。

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

3qpi33ja2#

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() ,因为您希望过期日期在将来,而不是过去。

相关问题