SQL - 选择4个日期之间的所有行

时间:2018-04-18 14:47:50

标签: sql

id        date_start        date_end
1         2018-01-01        2018-03-31
2         2018-04-01        2018-06-30
3         2018-07-01        2018-09-30
4         2018-10-01        2018-12-31

至于输入,我有time_starttime_end。如何通过将time_starttime_enddate_startdate_end进行比较来选择这些日期之间的所有行?

谢谢。

4 个答案:

答案 0 :(得分:1)

""之间是什么意思?其余部分假定开始时间在结束时或之前。

一个定义是整个"时间"期间是在期间。

select t.*
from t
where @time_start >= date_start and @time_end <= date_end;

另一个是时期重叠:

select t.*
from t
where @time_end >= date_start and @time_start <= date_end;

答案 1 :(得分:0)

这是你想要的吗?

select * from yourtable where 
time_start between date_start and date_end or time_end between date_start and date_end

答案 2 :(得分:0)

我假设两个输入日期都应该在date_字段之间。

select * from whatever 
 where  time_start between date_start and date_end 
 and time_end between date_start and date_end

答案 3 :(得分:0)

Select * from myTable
Where time_start < date_end and time_end > date_start

会给你重叠日期。你会调整&lt;和&gt;根据您的需要。例如,如果date_end是2018-05-06而你的time_start也是2018-05-06,那么要包含它你将使用:

... time_start <= date_end

如果像预订一样,这些date_end,time_start值不会被视为重叠(一天检出,另一个检入),然后:

... time_start < date_end

HTH