我的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')";
答案 0 :(得分: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
子句周围添加括号以获得您想要的逻辑。
答案 1 :(得分:0)
NOW()不会返回日期......这是一个完整的时间戳:
mysql> select NOW();
+---------------------+
| NOW() |
+---------------------+
| 2013-03-25 17:20:06 |
+---------------------+
1 row in set (0.00 sec)
尝试在其周围包裹DATE function:
mysql> select DATE(NOW());
+-------------+
| DATE(NOW()) |
+-------------+
| 2013-03-25 |
+-------------+
1 row in set (0.00 sec)
答案 2 :(得分:0)
NOW()
返回当前日期&amp;时间。
您可能希望使用DATE()
,因为它会在没有时间的情况下返回日期。
答案 3 :(得分:0)
NOW()函数使用时间戳,我认为您应该首先将其转换为您需要的日期格式。