0

我的 NOW 功能没有按我想要的方式工作。我只想简单地查找超过今天日期的日期。

这是我的查询。

SELECT * 
FROM   `trade_show_inventory` 
       LEFT JOIN `trade_show_reserved` 
              ON `trade_show_inventory`.`id` = `trade_show_reserved`.`productid` 
WHERE  `trade_show_inventory`.`quantity` > 0 
        OR `trade_show_reserved`.`datereserved` 
           + INTERVAL 5 day <= '2013-03-31' 
           AND `trade_show_reserved`.`datereserved` > Now()

编辑:

我将查询更改为此,但它仍然无法正常工作。还在努力。。

    $date = date('Y-m-d');
    $sql = "SELECT * FROM `trade_show_inventory` LEFT JOIN `trade_show_reserved`
    ON `trade_show_inventory`.`ID` = `trade_show_reserved`.`ProductID`
    WHERE (`trade_show_inventory`.`Quantity` > 0)
    or (`trade_show_reserved`.`DateReserved` + INTERVAL 5 DAY <= '$setupStart' and
           `trade_show_reserved`.`DateReserved` > '2013-03-25')";
4

4 回答 4

0

好吧,您的where子句解析如下:

WHERE (`trade_show_inventory`.`Quantity` > 0) or
      (`trade_show_reserved`.`DateReserved` + INTERVAL 5 DAY <= '2013-03-25' and
       `trade_show_reserved`.`DateReserved` > NOW()
      )

如果日期是 2013-03-25 之前的五天,那么它不可能是未来(至少从今天开始)。

在子句周围加上括号where以获得您想要的逻辑。

于 2013-03-25T20:19:29.977 回答
0

NOW() 不返回日期......这是一个完整的时间戳:

mysql> select NOW();
+---------------------+
| NOW()               |
+---------------------+
| 2013-03-25 17:20:06 |
+---------------------+
1 row in set (0.00 sec)

尝试将DATE 函数包装在它周围:

mysql> select DATE(NOW());
+-------------+
| DATE(NOW()) |
+-------------+
| 2013-03-25  |
+-------------+
1 row in set (0.00 sec)
于 2013-03-25T20:21:37.533 回答
0

NOW()返回当前日期和时间。

您可能希望使用DATE()它返回没有时间的日期。

于 2013-03-25T20:22:55.093 回答
0

NOW() 函数使用时间戳,我认为您应该首先将其转换为您需要的日期格式。

于 2013-03-25T20:23:15.467 回答