在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匹配的结果
我看一看BETWEEN
和DATEDIFF
,但认为这并不适用。
答案 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
的结果。
进一步分解,你有两个条件:
现在我们可以编写SQL:
SELECT *
FROM YourTable
WHERE @YourDate > starttime
AND @YourDate < endtime
请注意,您没有指定指定的时间是否恰好在开始时间或结束时间发生。其中,将<
替换为<=
,将>
替换为>=
。
还有其他方法可以实现相同的目标,但这显示了如何将问题分解为更小的部分,这通常是编写SQL查询时解决方案的途径。