查询小于或等于一组日期范围的日期

niwlg2el  于 2021-06-23  发布在  Mysql
关注(0)|答案(2)|浏览(450)

如何使用单个sql查询查询小于或等于多个日期的日期?
我需要找到

date <= ('29-05-2018', '30-05-2018', '31-05-2018')

提前谢谢。

uplii1fm

uplii1fm1#

最严格的日期(即最早的日期)将决定过滤,因为任何大于此日期的日期限制较少。所以,除了使用 ALL 会是使用 LEAST :

WHERE date <= LEAST('2018-05-29', '2018-05-30', '2018-05-31')

编辑(gordon):
在oracle中,这将是:

WHERE date <= LEAST(DATE '2018-05-29', DATE '2018-05-30', DATE '2018-05-31')
jv4diomz

jv4diomz2#

你可以用 ALL :
将值与列表中或查询返回的每个值进行比较。前面必须有=,!=,>,<,<=,>=。可以后跟返回一个或多个值的任何表达式或子查询。

date <= ALL('29-05-2018', '30-05-2018', '31-05-2018');

是否可以在子查询中对所有操作员的日期进行硬编码?
是的,有可能:

SELECT *
FROM tab_name
WHERE date <= ALL (SELECT some_date_column
                   FROM tab_name_2
                   WHERE ...);

<=>
SELECT *
FROM tab_name
WHERE date <= (SELECT MIN(some_date_column)
               FROM tab_name_2
               WHERE ...);

我桌上没有这些日期。我只想找出从今天到(今天+30天)的日期

SELECT *
FROM table_name
WHERE date BETWEEN TRUNC(SYSDATE) AND TRUNC(SYSDATE) + 30; -- Oracle

相关问题