私はテーブル、すなわちBookingDetailsを持っています。BookingDetailsには次のフィールドが含まれています。
顧客ID
デートから
DateTo
TimeFrom
の時間
BookingDetailsにはn個のレコードが含まれています。
CustomerID DateFrom DateTo TimeFrom TimeTo
11137 2012-08-14 2012-08-16 00:33:46 03:33:46
11138 2012-08-15 2012-08-17 08:00:00 00:31:03
11139 2012-08-16 2012-08-17 22:46:25 00:46:25
指定された情報DateFrom、DateTo、TimeFrom、TimeToの間でレコードを選択したい。
私は次のクエリをしました
declare @fDate date
set @fDate = '2012-08-14'
declare @tDate date
set @tDate = '2012-08-16'
declare @fTime time
set @fTime ='12:33:46 AM'
declare @tTime time
set @tTime='12:31:03 AM'
SELECT BookingDetails.CustomerID
FROM BookingDetails
WHERE (DateFrom between @fDate and @tDate) And (BookingDetails.DateFrom >= @fDate and BookingDetails.DateTo<=@tDate)
and(TimeFrom between CONVERT(varchar(15),cast(@fTime as time) , 108) and CONVERT(varchar(15),cast(@tTime as time) , 108))
and (TimeFrom >=CONVERT(varchar(15),cast(@fTime as time) , 108) and TimeTo <=CONVERT(varchar(15),cast(@tTime as time) , 108))
データベースの時間節約は24時間形式です。クエリで使用される時間は12時間形式であるため、クエリで24時間形式に変換します。
このクエリは正しいですか、それとも変更する必要がありますか?
このクエリは値を返しません。@ fDate 、@ tDate、@ fTime 、 @ tTimeの間のレコードを選択したい
最初の2つのcustomerID、つまり11137,11138の結果を期待しています