我想要数据库表中的可用日期。
Room number Start_date End_date
room 1 2018-12-01 2018-12-05
room 1 2018-12-08 2018-12-15
room 1 2018-12-20 2018-12-31
这是我从数据库添加的表。 当用户选择开始日期和结束日期而不是签入数据库时。如果已经在开始日期和结束日期之间。比结果需要可用日期。
用户开始日期= 2018-12-05
结束日期= 2018-12-20
需要的结果:
2018-12-06
2018-12-07
2018-12-16
2018-12-17
2018-12-18
2018-12-19
答案 0 :(得分:0)
要真正解决此问题,您需要一个每天Calendar
且每天只有一行的表。
有了这样的表格,您可以执行以下操作:
select c.date
from calendar c
where c.date >= '2018-12-05' and
c.date <= '2018-12-20' and
not exists (select 1
from t
where c.date >= start_date and
c.date <= end_date
);
我注意到,这根本没有考虑room_number
,因为您的问题根本没有提及。如果您有涉及room_number
的问题,请问另一个问题,并提供适当的示例数据,所需的结果以及要完成的工作的说明。