OK!所以,我有一个页面,我试图从数据库中提取日期<到期后30天。 现在,棘手的部分是 - 日期格式是“yyyy-mm-dd hh:mm:ss”
这是我的代码:
$Today = date("Y-m-d h:i:s");
if ($result = $mysqli->query("SELECT * FROM table WHERE DATEDIFF(ExpireDate, '$Today') < 30 ORDER BY `StartDate` ASC"))
{
while($row = mysqli_fetch_array($result))
{
//show records
//this type of query usually works when I'm NOT doing stuff with dates
}
mysqli_close($mysqli);
}
当我尝试仅提取没有任何日期/时间条件的记录时,它会给我整个记录列表,但是当我想要查看这些条件时,它不会显示任何内容。
如何显示到期后30天的记录?
我应该注意 - 这仅供内部使用,并且外部世界无法访问。
(我只想保留内部记录的简单内容)
我甚至试过这个:
select * from table where some_date < curdate() - interval 30 day
并且悲惨地失败了...想法?
答案 0 :(得分:2)
让>
&amp; <
运营商负责处理
$Today = date("Y-m-d h:i:s");
$ExpiresFromToday= date("Y-m-d h:i:s", strtotime("+30 days"));
if ($result = $mysqli->query("SELECT * FROM `table` WHERE (`ExpireDate` < '$ExpiresFromToday' AND `ExpireDate` > '$Today') ORDER BY `StartDate` ASC")){
while($row = mysqli_fetch_array($result)){
//show records
}
mysqli_close($mysqli);
}
修改强>
使用DATEDIFF
告诉mysql将日期时间字符串视为日期:
$Today = date("Y-m-d h:i:s");
if ($result = $mysqli->query("SELECT * FROM `table` WHERE (DATEDIFF(DATE(`ExpireDate`), DATE('$Today')) < 30 AND `ExpireDate` >= '$Today') ORDER BY `StartDate` ASC")){
while($row = mysqli_fetch_array($result)){
//show records
}
mysqli_close($mysqli);
}