[英]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.