Php MySQL-在过期日期前30天获取数据
我正在尝试获取过期日期在今天起30天内的数据。 我试过使用Php MySQL-在过期日期前30天获取数据,php,mysql,Php,Mysql,我正在尝试获取过期日期在今天起30天内的数据。 我试过使用BETWEEN子句,但仍然不起作用 表名注册: id exp_date 12 05-20-2018 19 05-19-2018 34 05-22-2018 假设今天的日期是2018年4月28日。我今天将其存储在变量$date\u中 $date_today = '04-28-2018'; $query = "SELECT
BETWEEN
子句,但仍然不起作用
表名注册:
id exp_date
12 05-20-2018
19 05-19-2018
34 05-22-2018
假设今天的日期是2018年4月28日。我今天将其存储在变量$date\u中
$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\u stmt\u bind\u param()
一起使用。看
要获取未来30天内到期的所有内容,您需要:
WHERE exp_date BETWEEN CURDATE() and DATE_ADD(CURDATE(), INTERVAL 30 DAY)
请注意,它使用的是
DATE\u ADD()
,而不是DATE\u SUB()
,因为您希望过期日期在将来,而不是过去。我希望它对您有用
DATEDIFF(d,GETDATE(),expiration_date) >= 30
对于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
谢谢,错误已被删除,但仍然没有data@Barmar我需要在过期日期前30天获取数据或
id
。意思是今天2018年4月28日
,到期日是2018年5月10日
。查询应该得到到期日是2018年5月10日的id
你是指今天到5月28日之间到期的一切?@Barmar工作正常!谢谢,我们将回顾这里给出的函数。您可以尝试在…之间使用。。。和…
但是交换日期,所以较早的日期在左边。但不确定日期的顺序是否重要。将日期存储为要匹配的行的日期?哪些不应返回?如果您查看他在到期前30天提出的问题,应该是。他的样本数据中的一个日期将与您的答案匹配。您的代码在到期前30天以上匹配。他可以将其从>=30更改为=30。