0

如何在 SQL 中检查给定时间间隔之间是否存在计划更清楚地了解

Select * 
From [Client].[scheduler] 
Where [Scheduler_Date] = '6/16/2012' 
    and ([start]<='13:06 ') 
    and ([end]>='14:31 ')
4

2 回答 2

1

我建议避免使用字符串并使用time数据类型:

select * from  [Client].[scheduler] 
where [Scheduler_Date] = '20120616' and 
      (CONVERT(time,[time_from])>='11:00') and 
      (CONVERT(time,[time_to])<='13:06')

(为什么是time_fromtime_to不是已经times?)

我还调整了日期字符串文字以使用安全格式(yyyymmdd)


另一方面,令我震惊的是,您可能希望找到与给定端点重叠(部分或完全)的任何时间表。诀窍是切换比较:

where [Scheduler_Date] = '20120616' and 
      (CONVERT(time,[time_from])<='13:06') and 
      (CONVERT(time,[time_to])>='11:00')

这个新WHERE子句将查找与 11:00-13:06 时间段重叠的所有行,而不仅仅是那些完全包含在其中的行。

于 2012-06-16T06:16:26.503 回答
0

尝试这个

select * 
from  [Client].[scheduler] 
where [Scheduler_Date] = '6/16/2012' and 
      (CONVERT(VARCHAR(5),[time_from],108) LIKE '11%') and 
      (CONVERT(VARCHAR(5),[time_to],108) LIKE '13:06%')
于 2012-06-16T06:03:29.920 回答