我有两个日期,From date和To Date。
我也有两个时间字段,From Time和To Time。
数据库中的日期字段是Datetime
. 我需要根据日期和时间选择数据。
这是我在 13:00 到 15:00 之间选择数据的查询,但它不适合20:00 到 08:00。
where Date>= '2/01/2012' AND Date<'2/28/2013'
AND CAST(Date AS TIME) BETWEEN '20:00' AND '08:00'
我有两个日期,From date和To Date。
我也有两个时间字段,From Time和To Time。
数据库中的日期字段是Datetime
. 我需要根据日期和时间选择数据。
这是我在 13:00 到 15:00 之间选择数据的查询,但它不适合20:00 到 08:00。
where Date>= '2/01/2012' AND Date<'2/28/2013'
AND CAST(Date AS TIME) BETWEEN '20:00' AND '08:00'
在没有看到您的具体错误/意外结果的情况下,我认为问题在于20 大于 8。
您必须使用两个条件:
where Date>= '2/01/2012' AND Date<'2/28/2013' AND (CAST(Date AS TIME) > '20:00' OR CAST(Date AS TIME) < '08:00')
编辑:固定条件
这就是你所追求的吗?
WHERE Date BETWEEN '2012-01-01 20:00:00.000' AND '2012-12-01 08:00:00.000'
有点不清楚您是否尝试动态生成 WHERE 子句变量?
您需要将“日期”和“时间”部分组合在一起。
此代码将说明如何执行此操作:
SELECT the_date
, the_time
, DateAdd(hh, DatePart(hh, the_time), the_date) As hour_added
, DateAdd(mi, DatePart(mi, the_time), the_date) As minute_added
, DateAdd(mi, DatePart(mi, the_time), DateAdd(hh, DatePart(hh, the_time), the_date)) As both_added
FROM (
SELECT Cast('2013-02-28' As datetime) As the_date
, Cast('08:30' As datetime) As the_time
) As example
然后,您可以在比较中使用结果值