简体   繁体   English

按日期分组-月-日小时和时间查询

[英]Group by Date -Month -Day Hour and Time Query

Group by Date -Month -Day Hour and Time Query 按日期分组-月-日小时和时间查询

I would like to group by Rundate and then JobDateStamp by yy/mm/dd hh:mm no seconds 我想按Rundate分组,然后按yy / mm / dd hh:mm分组JobDateStamp,没有秒

Results 结果

[RunDate]          [count]  
12/11/2014 21:00     3  
13/11/2014 21:00     1  

3 lots of jobs were run on 12/11/2014 (3 date and time) 1 lots of jobs were run on 13/11/2014 (1 date and time) 2014年11月11日(3个日期和时间)运行了3个工作作业12014年11月13日(1个日期和时间)运行了3个工作

**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)  

This data is a result of a query and next step is to group by yy/mm/dd hh:mm 此数据是查询的结果,下一步是按 yy / mm / dd hh:mm 分组

Rundate JobDateStamp Runs 运行日期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: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:25.393 1
2014-11-13 21:00:46.393 2014-11-13 21:36:24.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: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-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:43.393 1
2014-11-12 21:00:47.000 2014-11-12 21:04:41.393 1 2014-11-12 21:00:47.000 2014-11-12 21:04:41.393 1

you can do it by converting time to minutes and using count(distinct .. ) 您可以通过将时间转换为分钟并使用count(distinct .. )

As you need further filter by jobdatestamp, need to use it in count 由于您需要按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) 

Just truncate the datetime to the previous minute and group by that value: 只需将日期时间截断为前一分钟,然后按该值分组:

select 
    dateadd(minute, datediff(minute, 0, Rundate ), 0) RunDate,
    COUNT(*) Count
FROM tbl_tasks  
GROUP BY dateadd(minute, datediff(minute, 0, Rundate ), 0) 

If you are using SQL Server 2012 , you can also make some use of the Format to group on: 如果您使用的是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 

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

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