如何选择使用where子句?

时间:2013-08-29 11:59:07

标签: sql sql-server sql-server-2008 tsql

我有两个日期,从日期到日期

我还有两个时间字段,从时间到时间

数据库中的日期字段为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'

3 个答案:

答案 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

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