![](/img/trans.png)
[英]group by hour using time alone (ex:10:00:00 AM) in spark sql in java?
[英]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小时即可。 假设EndDate
是datetime
,可以通过减去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.