基于时间的sql过滤

基于时间的sql过滤,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,我需要根据日期和时间选择数据。我有两个标准。如何实现这一点 1选择2013年1月1日至2013年10月1日之间的数据,时间范围为10至16 2选择2013年1月1日至2013年10月1日之间的数据,时间范围为第二天早上20到8点 我实现了一个代码。它只适用于第一个标准。下面是代码 where date>='1-1-2013' AND date <'1-10-2013' AND CAST(date AS TIME) between '10:00' and '16:00'

我需要根据日期和时间选择数据。我有两个标准。如何实现这一点

1选择2013年1月1日至2013年10月1日之间的数据,时间范围为10至16

2选择2013年1月1日至2013年10月1日之间的数据,时间范围为第二天早上20到8点

我实现了一个代码。它只适用于第一个标准。下面是代码

 where date>='1-1-2013' AND date <'1-10-2013' 
     AND CAST(date AS TIME) between '10:00' and '16:00'
表中的日期字段为datetime类型。请帮助解决此问题

WHERE Date Between '2013-01-01 10:00' AND '2013-10-01 16:00'
二,

试试这个:

DECLARE @tmp TABLE ( date DATETIME )

INSERT  INTO @tmp
        ( date )
VALUES  ( '2013-01-01 10:09:29'  -- date - datetime
          )
INSERT  INTO @tmp
        ( date )
VALUES  ( '2013-01-01 15:09:29'  -- date - datetime
          )
INSERT  INTO @tmp
        ( date )
VALUES  ( '2013-01-01 17:09:29'  -- date - datetime
          )
INSERT  INTO @tmp
        ( date )
VALUES  ( '2013-01-01 07:09:29'  -- date - datetime
          )
SELECT  date
FROM    @tmp AS t
WHERE   CONVERT(DATE,date) >= CONVERT(DATE, '01-01-2013', 105)
        AND CONVERT(DATE,date) <= CONVERT(DATE, '01-01-2013', 105)
        AND CONVERT(TIME, date) BETWEEN CONVERT(TIME, '10:00')
                                AND     CONVERT(TIME, '16:00')

我理解对了吗?我不知道

试试这个

where date>='1-1-2013' AND date <'1-10-2013' 
     AND ((CAST(date AS TIME) between '10:00' and '16:00')
      OR (CAST(date AS TIME) between '20:00' and '23:59')
      OR (CAST(date AS TIME) between '00:00' and '08:00'))

对于第二个条件,您尝试了什么?您的问题是什么?您的第二个条件在查询中的什么位置?我只能查看1选择2013年1月1日至2013年10月1日之间的数据,时间范围在10至16之间。我没有执行第二个标准。请帮助我执行这些标准,有人有什么想法吗?谢谢你的帮助。但我需要选择2013年1月1日至2013年10月1日之间的数据,时间范围为晚上20点至次日早上8点。此查询不适用于此。请回复
where date>='1-1-2013' AND date <'1-10-2013' 
     AND ((CAST(date AS TIME) between '10:00' and '16:00')
      OR (CAST(date AS TIME) between '20:00' and '23:59')
      OR (CAST(date AS TIME) between '00:00' and '08:00'))