按日期分组-Month -Day Hour and Time Query
我想按Rundate和JobDateStamp分组yy / mm / dd hh:mm 没有秒
结果
[RunDate] [count]
12/11/2014 21:00 3
13/11/2014 21:00 1
2014年11月12日运行了3个工作岗位(3个日期和时间) 2014年11月13日(1个日期和时间)运行了大量工作
**create table tbl_tasks**
(
Rundate datetime,
JobDateStamp datetime,
Runs int
)
insert into tbl_tasks values
('2014-11-13 21:00:46.393','2014-11-13 21:36:27.393',1),
('2014-11-13 21:00:46.393','2014-11-13 21:36:25.393',1),
('2014-11-13 21:00:46.393','2014-11-13 21:36:24.393',1),
('2014-11-12 21:00:47.000','2014-11-13 14:14:46.393',1),
('2014-11-12 21:00:47.000','2014-11-13 14:12:46.393',1),
('2014-11-12 21:00:47.000','2014-11-12 21:04:43.393',1),
('2014-11-12 21:00:47.000','2014-11-12 21:04:41.393',1)
此数据是查询的结果,下一步是分组 yy / mm / dd hh:mm
Rundate JobDateStamp运行
2014-11-13 21:00:46.393 2014-11-13 21:36:27.393 1
2014-11-13 21:00:46.393 2014-11-13 21:36:25.393 1
2014-11-13 21:00:46.393 2014-11-13 21:36:24.393 1
2014-11-12 21:00:47.000 2014-11-13 14:14:46.393 1
2014-11-12 21:00:47.000 2014-11-13 14:12:46.393 1
2014-11-12 21:00:47.000 2014-11-12 21:04:43.393 1
2014-11-12 21:00:47.000 2014-11-12 21:04:41.393 1
答案 0 :(得分:2)
您可以通过将时间转换为分钟并使用count(distinct .. )
由于您需要通过jobdatestamp进一步过滤,因此需要在计数中使用它
SELECT dateadd(minute, datediff(minute, 0, rundate), 0) ,
count( distinct dateadd(minute, datediff(minute, 0, JobDateStamp), 0))
FROM tbl_tasks
GROUP by dateadd(minute, datediff(minute, 0, rundate), 0)
答案 1 :(得分:1)
只需将日期时间截断为上一分钟,然后按该值分组:
select
dateadd(minute, datediff(minute, 0, Rundate ), 0) RunDate,
COUNT(*) Count
FROM tbl_tasks
GROUP BY dateadd(minute, datediff(minute, 0, Rundate ), 0)
答案 2 :(得分:0)
如果您使用的是SQL Server 2012
,您还可以使用Format
进行分组:
Select Rundate, Count(*) Count
From
(
Select Format(Rundate, 'yyyy/MM/dd HH:mm') Rundate, JobDateStamp, Runs
From tbl_tasks
)A
Group By Rundate