使用sql在数据库中为redshift选择两个不同的日期范围



我有如下代码:

select date
from date_table
where date between '2019-05-01' and '2019-07-31'
and date between '2020-05-01' and '2020-07-31'

但是当我运行上面的代码时,它没有显示任何行,尽管我只使用成功运行

select date
from date_table
where date between '2019-05-01' and '2019-07-31'

有人知道为什么吗?

假设您想要OR这两个日期范围:

SELECT date
FROM date_table
WHERE
date BETWEEN '2019-05-01' AND '2019-07-31'
OR
date BETWEEN '2020-05-01' AND '2020-07-31';

将这两个范围进行"与"运算永远不会返回任何记录,因为这两个区域是互斥的,任何日期都只能属于其中一个区域。

顺便说一句,如果你想包括2019年5月1日至2019年7月31日(包括2019年((其他范围也有类似的逻辑(,那么你应该使用不等式:

SELECT date
FROM date_table
WHERE
date >= '2019-05-01' AND date < '2019-08-01'
OR
date >= '2020-05-01' AND date < '2020-08-01';

最新更新