我试图获取截止日期在今天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
答案 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
答案 2 :(得分:-1)
我希望它对你有用。
DATEDIFF(d,GETDATE(),expiration_date) >= 30