基于特定日期使用PHP显示MySQL数据

时间:2013-06-18 11:37:35

标签: php mysql

我的数据库中有一个名为“maintenance”的表,其中包含以下列。

序列(INT11) from_date(DATETIME) to_date(DATETIME) serviceimpact(LONGTEXT) 服务受影响(LONGTEXT) 理由(LONGTEXT)

基本上,我会在服务器维护服务发生时添加数据,所以我希望信息在from_date前几天显示,然后在to_date之后的几天显示之后消失,只是显示一条消息说

“不会很快进行任何维护”

目前我有:

$sql="SELECT * FROM maintenance where from_date >= date(NOW()) and to_date <= date(NOW()) ORDER BY from_date ASC";
$rs=mysql_query($sql,$conn) or die(mysql_error());
if(mysql_num_rows($rs) > 0)
{
    while($result=mysql_fetch_array($rs))
    {
        echo '<strong>Maintenance Period:</strong> '.$result["from_date"].' to '.$result["to_date"].'<br><br>';
        echo '<strong>Services Affected</strong><br>';
        echo nl2br(stripslashes($result["servicesaffected"])).'<br><br>';
        echo '<strong>Service Impact:</strong><br>';
        echo nl2br(stripslashes($result["serviceimpact"])).'<br><br>';
        echo '<strong>Reason for Maintenance:</strong><br>';
        echo nl2br(stripslashes($result["reason"])).'<br><br><hr /><br><br';
    }
}
else
{
    //otherwise, display a message to say everything is running fine
    echo 'There is currently no planned outages for maintenance or upgrade on any of our platforms.';
}

但是我的工作方式并不奏效 - 我能做些什么?

2 个答案:

答案 0 :(得分:1)

使用DATE_SUB()和DATE_ADD()

$sql="SELECT * FROM maintenance where from_date >= DATE_SUB(NOW(),INTERVAL 2 DAY) AND to_date <= DATE_ADD(NOW(),INTERVAL 2 DAY) ORDER BY from_date ASC";

答案 1 :(得分:0)

SELECT * FROM maintenance
WHERE to_date <= DATE_ADD(NOW(), INTERVAL 2 DAY)
    AND from_date >= DATE_SUB(NOW(), INTERVAL 2 DAY)
ORDER BY from_date ASC

请注意,在DATE_SUB / ADD函数中它应该是DAY,而不是DAYS。