PHP MySQLI DateTime TimeStamps无法正确拉动

时间:2015-07-09 19:57:14

标签: php datetime mysqli

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

并且悲惨地失败了...想法?

1 个答案:

答案 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);
}