如何检查SQL中给定时间间隔之间是否存在计划 更明显地揭穿
Select *
From [Client].[scheduler]
Where [Scheduler_Date] = '6/16/2012'
and ([start]<='13:06 ')
and ([end]>='14:31 ')
答案 0 :(得分: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_from
和time_to
尚未time
?)
我还调整了日期字符串文字以使用安全格式(yyyymmdd)
另一方面,我可能想要找到与给定端点重叠(部分或全部)的任何时间表。诀窍是切换比较:
where [Scheduler_Date] = '20120616' and
(CONVERT(time,[time_from])<='13:06') and
(CONVERT(time,[time_to])>='11:00')
这个新的WHERE
子句将找到与11:00-13:06时间段重叠的任何行,而不仅仅是那些完全包含在其中的行。
答案 1 :(得分: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%')