如何在sql中获取一系列日期之间的数据

如何在sql中获取一系列日期之间的数据,sql,sql-server,datetime,Sql,Sql Server,Datetime,我需要选择日期之间的记录: 如果我输入开始日期为2019年1月5日18:40:00,结束日期为2019年1月25日18:40:00 然后必须选择两行 另一个例子。。。记录的开始日期和结束日期分别为2019年1月1日和2019年1月31日。如果我输入2019年1月5日和2019年1月25日,则必须选择该记录 我想如果我输入了应该选择的记录的实际开始日期和结束日期之间的任何日期 我使用了between,但它选择了具有确切日期值的记录 BeginDate >= @BeginDate and

我需要选择日期之间的记录:

如果我输入开始日期为2019年1月5日18:40:00,结束日期为2019年1月25日18:40:00 然后必须选择两行

另一个例子。。。记录的开始日期和结束日期分别为2019年1月1日和2019年1月31日。如果我输入2019年1月5日和2019年1月25日,则必须选择该记录

我想如果我输入了应该选择的记录的实际开始日期和结束日期之间的任何日期

我使用了between,但它选择了具有确切日期值的记录

BeginDate >= @BeginDate 
and BeginDate <= dateadd(day, 1, @EndDate)
and (EndDate is null or EndDate> @EndDate)
BeginDate>=@BeginDate
和BeginDate@EndDate)

谁能帮我解决这个问题。

根据您的反馈,您需要一个简单的日期重叠查询:

SELECT *
FROM t
WHERE @EndDate   > BeginDate
AND   @BeginDate < EndDate
选择*
从t
其中@EndDate>BeginDate
和@BeginDate

它将匹配开始日期和结束日期以任何方式相交于@Start和@EndDate的行。它假定结束日期是独占的。您可能需要添加
(…或EndDate为NULL)
来处理空值。

几个小时前有人问了一个非常类似的问题。看看你能不能找到它@朱:问题。如果输入日期是2019年1月4日和2019年3月1日,会发生什么?如果输入日期是2019年1月6日和2019年3月1日,会发生什么?为什么要删除(并破坏)你的另一个问题@朱,然后发布这一个与上一个问题具有相同(低)细节的问题?@larnu我补充了澄清。运营商对于独家结束日期是正确的,即2019-02-31 13:41:00表示事件在13:41:00之前结束。