从SQL中的开始日期和结束日期获取下一个可用日期

时间:2018-12-02 12:00:05

标签: mysql sql mysqli phpmyadmin

我想要数据库表中的可用日期。

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

1 个答案:

答案 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的问题,请问另一个问题,并提供适当的示例数据,所需的结果以及要完成的工作的说明。