0

是否可以在 MySQL 查询中使用类似于我所展示的 if 语句?我想获取一些即将发生的事件的信息(不是以前日期的事件)。

ini_set('date.timezone', 'America/New_York');
    echo $timestamp = date('Y-m-d'); 
    $sql = "select eventID,eventTitle,eventDate from events where eventLocationID = $locationID AND (eventDate > $timestamp) ORDER BY eventDate ASC";

编辑 - sql 语句没有过滤掉今天之前的日期(它正在显示所有内容)。

例如,我回显时间戳只是为了确保它设置正确。在我的表格中,我输入了两个日期,一个在 1 月,一个在今天。

所以这是输出

  2012-05-31 //timestamp, not part of results. just for reference
  2012-01-10 //first result, however it shouldn't display
  2012-06-22 //this should be the only result that displays
4

1 回答 1

6

只需使用 where 子句:

$date = date('Y-m-d');
$sql = "
    SELECT 
        foo 
    FROM 
        bar 
    WHERE
        eventLocationId = ... 
        AND eventDate > '$date' 
    ORDER BY 
        eventDate DESC
";

此外,m/d/Y它不是 MySQL 的有效日期格式。它预计Y-m-d.


在与您的问题没有直接关系的注释上:

我真的很想避免做后查询 if 语句

如果在 PHP 中过滤结果集,它会比使用 where 子句慢很多倍。数据库用于快速有效地过滤记录。而且,PHP 中的过滤要求您将所有结果从 MySQL 实际传输到 PHP(另一个速度变慢)。

于 2012-05-31T22:37:52.887 回答