我有桌子,即BookingDetails。BookingDetails 包含以下字段。
客户ID
日期从
日期至
时间从
时间到
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之间选择记录
我期望前两个 customerID 的结果,即 11137,11138