我的数据库中有一个名为“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.';
}
但是我的工作方式并不奏效 - 我能做些什么?
答案 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。