如何在两个日期之间找到所有结果?

时间:2014-07-23 09:17:18

标签: sql-server sql-server-2008 tsql sql-server-2008-r2

在SQL Server表中有两个日期:开始日期时间和结束日期时间。现在我想在日期时间搜索所有结果。例如,这个表:

id|name|starttime|endtime
1|Peter|2014-07-22 07:00|2014-07-22 15:00
2|John|2014-07-22 08:00|2014-07-22 17:00
3|Martin|2014-07-22 07:30|2014-07-22 12:00

现在我想要所有在2014-07-22 07:50匹配的结果

我看一看BETWEENDATEDIFF,但认为这并不适用。

3 个答案:

答案 0 :(得分:2)

试试这个:

Select *
From YourTable
Where StartDate <= @YourDate
  and EndDate >= @YourDate

答案 1 :(得分:1)

什么是错的 SELECT * FROM Table WHERE @Parameter BETWEEN startTime AND endTime?

答案 2 :(得分:1)

打破逻辑,您希望找到your date occurs after starttime your date occurs before endtime的结果。

进一步分解,你有两个条件:

  1. YourDate&gt;开始时间
  2. YourDate&lt;结束时间
  3. 现在我们可以编写SQL:

    SELECT *
    FROM YourTable
    WHERE @YourDate > starttime
    AND @YourDate < endtime
    

    请注意,您没有指定指定的时间是否恰好在开始时间或结束时间发生。其中,将<替换为<=,将>替换为>=

    还有其他方法可以实现相同的目标,但这显示了如何将问题分解为更小的部分,这通常是编写SQL查询时解决方案的途径。