繁体   English   中英

SQL Server 2008组的结果为24小时范围(从10:01:00 am到10:00:59 am)

[英]SQL Server 2008 Group results in 24 hour range (from 10:01:00am to 10:00:59am)

此问题与SQL Server 2008有关。

我有一系列日期,需要计算10:01:00 AM到10:00:59 AM之间的24小时内的所有日期。

我已经准备好每天进行循环响应,但是我无法找出正确的SQL语句来将开始时间和结束时间设置在24小时范围内。 有人可以帮忙吗?

当前的SQL语句

SELECT 
    CONVERT(CHAR(8), DateAdd(hour, 10, EndDate), 10) as DailyDate, 
    COUNT(*) As Total
FROM 
    EndDate
WHERE 
    DateAdd(hour, 10, EndDate) > getDate()
    AND DateAdd(hour, 10, EndDate) < DateAdd(day, 10, getDate())
GROUP BY 
    CONVERT(CHAR(8), DateAdd(hour, 10, EndDate), 10)
ORDER BY 
    CONVERT(CHAR(8), DateAdd(hour, 10, EndDate), 10)

期望的输出

DailyDate - Total  
06-28-14 - ? *(should be 6)*  
06-29-14 - ? *(should be 13)*  
06-30-14 - ? *(should be 15)*  
07-01-14 - ? *(should be 8)*  
07-02-14 - ? *(should be 1)*  

资源

EndDate  
6/28/2014 8:23:00 PM  
6/29/2014 12:37:00 AM  
6/29/2014 2:56:00 AM  
6/29/2014 9:31:00 AM  
6/29/2014 10:00:00 AM  
6/29/2014 10:00:00 AM  

6/29/2014 10:01:00 AM  
6/29/2014 11:30:00 AM  
6/29/2014 1:09:00 PM  
6/29/2014 1:47:00 PM  
6/29/2014 6:01:00 PM  
6/29/2014 11:02:00 PM  
6/29/2014 11:33:00 PM  
6/30/2014 1:12:00 AM  
6/30/2014 3:37:00 AM  
6/30/2014 5:23:00 AM  
6/30/2014 5:24:00 AM  
6/30/2014 6:25:00 AM  
6/30/2014 10:00:00 AM  

6/30/2014 10:01:00 AM  
6/30/2014 10:02:00 AM  
6/30/2014 10:02:00 AM  
6/30/2014 11:11:00 AM  
6/30/2014 12:04:00 PM  
6/30/2014 5:15:00 PM  
6/30/2014 6:08:00 PM  
6/30/2014 9:51:00 PM  
6/30/2014 10:45:00 PM  
7/1/2014 12:14:00 AM  
7/1/2014 12:21:00 AM  
7/1/2014 2:32:00 AM  
7/1/2014 2:58:00 AM  
7/1/2014 6:30:00 AM  
7/1/2014 10:00:00 AM  

7/1/2014 12:40:00 PM  
7/1/2014 2:35:00 PM  
7/2/2014 12:04:00 AM  
7/2/2014 12:36:00 AM  
7/2/2014 2:34:00 AM  
7/2/2014 5:03:00 AM  
7/2/2014 6:14:00 AM  
7/2/2014 10:00:00 AM  

7/2/2014 10:01:00 AM  

从结果中减去10小时即可。 假设EndDatedatetime ,可以通过减去10.0 / 24天来做到这一点:

SELECT  CONVERT(CHAR(8), EndDate - 10.0/24, 10) as DailyDate, COUNT(*) As Total
FROM EndDate
WHERE DateAdd(hour, 10, EndDate) > getDate() AND
      DateAdd(hour, 10, EndDate) < DateAdd(day, 10, getDate())
GROUP BY CONVERT(CHAR(8), EndDate - 10.0/24, 10)
ORDER BY DailyDate;

查询的问题是您要增加10小时而不是减去10小时,因此您也可以修改查询,并将-10用作dateadd()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM