-1

我有两个日期,From dateTo Date

我也有两个时间字段,From TimeTo 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'
4

3 回答 3

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

编辑:固定条件

于 2013-08-29T12:06:02.533 回答
2

这就是你所追求的吗?

WHERE Date BETWEEN '2012-01-01 20:00:00.000' AND '2012-12-01 08:00:00.000'

有点不清楚您是否尝试动态生成 W​​HERE 子句变量?

于 2013-08-29T12:08:18.267 回答
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

然后,您可以在比较中使用结果值

于 2013-08-29T12:08:45.667 回答