sql - BETWEEN Two Dates 返回相同两个日期的行,而不是返回之间的行
问题描述
我正在尝试选择两个特定日期之间的行,但我得到的是与指定日期相同的行 BETWEEN
。我尝试使用运算符 > 和 <,但似乎没有任何效果。它与日期格式有关吗?
SELECT r.RESERVATION_ID, a.AGENT_ID, a.AGENT_FNAME AS AGENT_NAME, t.TRIP_ID,
s.RESERVATION_STATUS
FROM RESERVATION r
INNER JOIN AGENT a
ON
a.AGENT_ID=r.AGENT_ID
INNER JOIN TOURTRIP_RESERVATION t
ON
r.RESERVATION_ID=t.RESERVATION_ID
INNER JOIN RESERVATION_STATUS s
ON
r.RESERVATION_STATUSID=s.RESERVATION_STATUSID
WHERE r.AGENT_ID IS NOT NULL
AND r.RESERVATION_DATE BETWEEN '15-MAR-20' AND '26-MAY-20'
AND r.RESERVATION_STATUSID=100;
我使用to_date('03.06.2020','DD.MM.YYYY')
格式来更新reservation_id 列中的数据。但是,当我使用
and RESERVATION_DATE > to_date('15.03.2020','DD.MM.YYYY')
and RESERVATION_DATE < to_date('26.05.2020','DD.MM.YYYY')
它什么也没返回
这是预订表
解决方案
之间的条件包括开始和结束。
您可以使用运算符 > 和 < 来排除它。
您的示例简化了:
create table RESERVATION (
RESERVATION_ID number
,RESERVATION_DATE date)
数据:
insert into RESERVATION values (1, to_date('01.06.2020','DD.MM.YYYY'));
insert into RESERVATION values (2, to_date('02.06.2020','DD.MM.YYYY'));
insert into RESERVATION values (3, to_date('03.06.2020','DD.MM.YYYY'));
查询 A)
select RESERVATION_ID
from RESERVATION
where RESERVATION_DATE between to_date('01.06.2020','DD.MM.YYYY')
and to_date('03.06.2020','DD.MM.YYYY')
将返回:
1
2
3
查询 B)
select RESERVATION_ID
from RESERVATION
where RESERVATION_DATE > to_date('01.06.2020','DD.MM.YYYY')
and RESERVATION_DATE < to_date('03.06.2020','DD.MM.YYYY')
将返回
2
我假设RESERVATION_DATE是一个日期。始终使用显式数据类型转换。