我有两个日期,从日期和到日期。
我还有两个时间字段,从时间和到时间。
数据库中的日期字段为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'
答案 0 :(得分:2)
如果没有看到您的具体错误/意外结果,我认为问题是 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')
编辑:固定条件
答案 1 :(得分:2)
这就是你想要的吗?
WHERE Date BETWEEN '2012-01-01 20:00:00.000' AND '2012-12-01 08:00:00.000'
您是否正在尝试动态生成WHERE子句变量有点不清楚?
答案 2 :(得分:0)
您需要将“日期”和“时间”部分组合在一起。
此代码将说明如何执行此操作:
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
然后,您可以在比较中使用结果值