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

时间:2018-04-28 06:14:32

标签: php mysql

我试图获取截止日期在今天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

3 个答案:

答案 0 :(得分:2)

BETWEEN low_value AND high_value 不是一个函数,它是一个运算符。语法是:

mysqli_stmt_bind_param()

您还应该停止使用变量替换并将预准备语句与WHERE exp_date BETWEEN CURDATE() and DATE_ADD(CURDATE(), INTERVAL 30 DAY) 一起使用。见Glide

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

DATE_ADD()

请注意,这使用的是DATE_SUB(),而不是Persist Security Info,因为您希望将来有效期,而不是过去。

答案 1 :(得分:0)

对于sql server,检查1-7天内过期的项目

select sdate, edate, DATEDIFF(MONTH,GETDATE(),edate) as MONTHS from Stockin 
where DATEDIFF(MONTH,GETDATE(),edate) between 1 and 7
order by edate desc

enter image description here

答案 2 :(得分:-1)

我希望它对你有用。

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