2014-07-23 59 views
0

在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年7月22日07:50

我看看到BETWEENDATEDIFF但是认为不适合工作它。

+0

提示:您希望查找在开始时间和结束时间之后发生日期的结果。 – DavidG

+0

是的,这是结论,但我怎么能达到这个目标? – kockiren

+0

阅读并将逻辑分解成更小的部分,然后它非常简单。 – DavidG

回答

1

最新错误 SELECT * FROM表WHERE @Parameter BETWEEN startTime AND endTime?

+0

如果我设置startdate和enddate,我可以设置我的日期时间我要找? – kockiren

+0

好的 - 我想你在问:“我不知道如何将参数传递给一块SQL,以便将其值与数据库中保存的数据进行比较”?在这种情况下,答案很大程度上取决于您使用的工具 - SQL企业管理器? .net编程语言? – PhillipH

+0

对不起,现在我明白你了,是的,这是解决方案。谢谢 – kockiren

2

试试这个:

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

打破你的逻辑,你想找到结果,其中your date occurs after starttimeyour date occurs before endtime

打破它进一步下降,你有2个条件:

  1. YourDate>开始时间
  2. YourDate <结束时间

所以现在我们可以写我们的SQL:

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

请注意,您没有指定您指定的时间是否可以精确地出现在开始时间或结束时间。如此,用<=>替换<>=

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

相关问题