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')

(なぜstime_fromであり、time_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 に答える