如何执行仅返回两个值的sql查询,比较now()之前的日期类型和now()之后的日期类型。
我为一个解决方案创建了一个sql查询,但是如何结合下面的sql查询以返回now和now()之后的
SELECT *
FROM Orders
WHERE ordersDate > now()
AND ordersDate IS NOT NULL
ORDER BY ordersDate ASC
LIMIT 1;
我正在尝试的另一个SQL查询:
SELECT *
FROM Orders
WHERE
(SELECT min(ordersDate) FROM Orders
Where ordersDate > now())
AND
(SELECT max(ordersDate) FROM Orders
Where ordersDate < now());
此sql返回两个以上的值,这不是我想要的,我只是now()之前和之后的一个(仅两个值)。
给出今天的now()值的预期输出:(我不知道如何在此处创建表)
OrdersID ordersDate OrderMade
4 19/09/2018 yes
7 21/09/2018 PreOrder
答案 0 :(得分:2)
一种方法是拥有两个单独的SELECT查询。一个查询在当前日期时间之前获取订单,另一个查询在当前日期时间之后获取。我们可以使用Order By Limit子句来为每个Select语句仅获取一行。然后,您可以使用UNION ALL来获得组合结果。
尝试以下查询:
(
SELECT *
FROM Orders
WHERE ordersDate > NOW()
ORDER BY ordersDate ASC LIMIT 1
)
UNION ALL
(
SELECT *
FROM Orders
WHERE ordersDate < NOW()
ORDER BY ordersDate DESC LIMIT 1
)