mysql - 比较 now() 并返回最近的前一个日期和最近的下一个日期 SQL

标签 mysql sql

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

相关文章:

php - 插入 php post vars 时的 sql 语法错误

sql - 数据标准化: switch column and rows of data

mysql - 将 3589 格式化为 00 :35:89 using SQL SELECT Sum

mysql - Ubuntu升级后Golang MySQL连接超时

mysql - 如何在 MySQL 中返回数据透视表输出?

MYSQL 奇怪的语法错误,带/不带分号

mysql - SpagoBI 5 JDBC 在远程服务器中的安装

Mysql Select语句按时、日、月、年

php 关于assertEquals的解释

mysql - 如何合并sql查询之间的列表?