2012-07-23 98 views
0

如果可能的话,我希望在一个声明中这样做。如何按照与午夜不同的时间开始分组?

我原来的查询是这样的:

SELECT CAST(Date as DATE) as DayDate, SUM(Books) as LostBooks 
FROM RestartBooksView 
WHERE Name = 'AUHT167' and Date > (getdate() - 105) 
GROUP BY CAST(Date as DATE) 
ORDER BY CAST(Date as DATE) ASC 

与此查询的问题是,我想求和由上午七时至7时的一天,而不是目前的12点至12点的一天得到体现。如何修改我的查询以反映此更改?

+0

也许你也可以考虑更简洁的标题为你的问题。 – 2012-07-23 15:25:46

+0

也许还考虑更改您的用户名 – 2012-07-23 15:30:31

回答

3

假设列“日期”实际上是一个日期时间。

SELECT CAST(Date as DATE) as DayDate, SUM(Books) as LostBooks 
FROM (select rbv.*, 
      cast(dateadd(h, -7, date) as date) as newdate 
     from RestartBooksView rbv 
    ) 
WHERE Name = 'AUHT167' and newdate > (getdate() - 105) 
GROUP BY newdate 
ORDER BY CAST(Date as DATE) ASC 

我也使用SQL Server日期函数,因为您似乎正在使用该数据库。

+0

谢谢!不得不修改它,但它的工作。 – tareqx3 2012-07-23 15:44:44