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')
(なぜstime_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%')