比较now()并返回最接近的上一个日期和最接近的下一个日期SQL

时间:2018-09-20 12:03:37

标签: mysql sql

如何执行仅返回两个值的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

1 个答案:

答案 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
)