我想在第二天早上20:00到08:00看到2月份的数据

时间:2013-08-29 11:30:43

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

我需要使用where子句从表中选择数据。场景在这里。我希望在2月份的数据中看到第二天早上20:00到08:00的数据。这里的字段是datetime。 如何选择数据?请回复

2 个答案:

答案 0 :(得分:1)

这是一种方式:

select *
from t
where hour(t.datetime + 4.0/24) between 0 and 11 and
      month(t.datetime + 4.0/24) = 2;

假设你想要晚上9点,这个日期增加了4个小时。 1月31日将被列入2月份。如果你真的希望包括3月1日凌晨1点,那么减去20小时:

select *
from t
where hour(t.datetime - 20.0/24) between 0 and 11 and
      month(t.datetime - 20.0/24) = 2;
顺便说一下,你也可以把时间表示为:

where (hour(t.datetime) >= 20 or hour(t.datetime) < 8);

答案 1 :(得分:0)

也许

...
WHERE(  DATEPART(month, DateCol) = 2
   AND( DATEPART(hour,  DateCol) >= 20 OR DATEPART(hour, DateCol) <= 8 )
OR  (   DATEPART(month, DateCol) = 3 
   AND  DATEPART(day,   DateCol) = 1
   AND  DATEPART(hour,  DateCol) <= 8));