compare now()并返回最近的上一个日期和最近的下一个日期

bvhaajcl  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(309)

如何执行只返回两个值的sql查询,比较日期类型before now()和日期类型after now()。
我已经为一个解决方案创建了一个sql查询,但是如何组合下面的sql查询来返回previous和after 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返回两个以上的值,这不是我想要的,我只返回一个before和after now(),两个值而已。
今天的预期输出given now()值:(我不知道如何在这里创建表)

OrdersID    ordersDate               OrderMade
    4             19/09/2018            yes
    7             21/09/2018            PreOrder
qcuzuvrc

qcuzuvrc1#

一种方法是使用两个单独的select查询。一个查询获取当前日期时间之前的订单,另一个查询获取当前日期时间之后的订单。我们可以使用ORDERBYLIMIT子句,每个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
)

相关问题