将当前日期/时间与数据库中的日期/时间进行比较

时间:2013-04-29 19:24:19

标签: php mysql sql

我需要根据当前日期和时间创建显示图像的内容。我有一个SQL表设置,如下所示:

eventid | startdate  | enddate    | imgfile    | status
6       | 2013-04-29 | 2013-05-03 | finals.jpg | active

我需要做的是将开始日期和结束日期与当前日期进行比较,如果当前日期在startdate和enddate之内,则显示imgfile。

我不知道如何解决这个问题,但这就是我的尝试。

//get current date and time
$currentdatetime = strtotime(now);
$formatteddatetime = date("y-m-d", $currentdatetime);

while($row=mysql_fetch_array($getimage))
{
    //get variable for startdate
    $formattedstartdate = date("y-m-d", $row[startdate]);
    $formattedenddate = date("y-m-d", $row[enddate]);
    if($formatteddatetime >= $formattedstartdate AND $formatteddatetime <= $formattedenddate AND $row[status] == 'active')
    {
        echo $row[imgfile];
    }
}
?>

现在,它没有在整个while语句中显示任何内容。我至少走在正确的轨道上了吗?

2 个答案:

答案 0 :(得分:3)

CURRENT_DATE以“YYYY-MM-DD”格式或YYYYMMDD格式返回当前日期,具体取决于函数中是使用数字还是字符串。 CURDATE()和CURRENT_DATE()是CURRENT_DATE的同义词。

答案 1 :(得分:2)

您应该在SQL查询而不是PHP中执行此操作。例如:

SELECT * FROM table WHERE CURRENT_DATE BETWEEN startdate AND enddate;

CURRENT_DATE()是一个MySQL函数,它返回当前日期,顾名思义。它是少数具有别名而没有括号的特殊函数之一。