如何执行仅返回两个值的 sql 查询,比较 now() 之前的日期类型和 now() 之后的日期类型。
我已经为一个解决方案创建了一个 sql 查询,但是我如何结合下面的 sql 查询来返回之前和之后的 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
最佳答案
一种方法是使用两个单独的 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
)
关于mysql - 比较 now() 并返回最近的前一个日期和最近的下一个日期 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52424787/