【问题标题】:count distinct hour from datetime从日期时间计算不同的小时
【发布时间】:2012-05-30 02:45:04
【问题描述】:

我正在使用 sql 数据库,但我遇到了问题。这是关于公共交通的,我有表格“交通事故”和“事故发生时间”列(日期时间)。我需要计算在特定时间发生了多少事故,以了解一天中最危险的部分。 我知道如何将小时与日期时间分开,但问题是如何计算和排序.. 应该是这样的:

交通事故发生时间

 2011-03-05 07:40:00.000,        
 2011-03-07 01:15:00.000,      
 2011-04-07 19:00:00.000,      
 2011-07-23 11:00:00.000,        
 2011-06-22 07:09:00.000,
 2011-03-08 07:14:00.000,
 2011-02-02 01:26:00.000  

按小时排序事故

7h- 3 accidents,
1h- 2 accidents,
6h- 1 accident,
etc…

我的英语不是很完美,但我希望我足够清楚:P 谢谢你,Urosh

【问题讨论】:

    标签: sql-server-2008 datepart


    【解决方案1】:

    试试这样的:

    WITH T as
    (
     SELECT '2011-03-05 07:40:00.000' Col1 UNION ALL        
     SELECT '2011-03-07 01:15:00.000' Col1 UNION ALL  
     SELECT '2011-04-07 19:00:00.000' Col1 UNION ALL        
     SELECT '2011-07-23 11:00:00.000' Col1 UNION ALL          
     SELECT '2011-06-22 07:09:00.000' Col1 UNION ALL  
     SELECT '2011-03-08 07:14:00.000' Col1 UNION ALL  
     SELECT '2011-02-02 01:26:00.000' 
    ) 
    

    假设 T 是您的表,Col1 是您的日期列。

    SELECT DATEPART(hour,Col1) as Hour,COUNT(DATEPART(hour,Col1)) as Accidents FROM T
    GROUP BY DATEPART(hour,Col1)
    ORDER BY DATEPART(hour,Col1)
    

    结果:

    Hour Accidents
    1    2
    7    3
    11   1
    19   1
    

    最好的问候

    【讨论】:

    • 非常感谢,我执行查询没有问题!
    • 我现在可以睡觉了 :) 再次感谢
    • 欢迎@Urosh。您能否确认我的帖子作为答案。 :)
    • +1,您可以将DATEPART(hour,Col1) 替换为ORDER BY 中的HourCOUNT(…) 中的*
    猜你喜欢
    • 2016-09-30
    • 2021-03-22
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 2020-05-02
    • 2017-01-08
    相关资源
    最近更新 更多