如何在 SQL 中检查给定时间间隔之间是否存在计划更清楚地了解
Select *
From [Client].[scheduler]
Where [Scheduler_Date] = '6/16/2012'
and ([start]<='13:06 ')
and ([end]>='14:31 ')
如何在 SQL 中检查给定时间间隔之间是否存在计划更清楚地了解
Select *
From [Client].[scheduler]
Where [Scheduler_Date] = '6/16/2012'
and ([start]<='13:06 ')
and ([end]>='14:31 ')
我建议避免使用字符串并使用time
数据类型:
select * from [Client].[scheduler]
where [Scheduler_Date] = '20120616' and
(CONVERT(time,[time_from])>='11:00') and
(CONVERT(time,[time_to])<='13:06')
(为什么是time_from
而time_to
不是已经time
s?)
我还调整了日期字符串文字以使用安全格式(yyyymmdd)
另一方面,令我震惊的是,您可能希望找到与给定端点重叠(部分或完全)的任何时间表。诀窍是切换比较:
where [Scheduler_Date] = '20120616' and
(CONVERT(time,[time_from])<='13:06') and
(CONVERT(time,[time_to])>='11:00')
这个新WHERE
子句将查找与 11:00-13:06 时间段重叠的所有行,而不仅仅是那些完全包含在其中的行。
尝试这个
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%')