按时间分组,没有时间

use*_*641 6 sql sql-server group-by

我想知道是否有办法将2014-01-26 05:39:29.000和2014-01-26 07:45:31.000的日期分组到计算它们的一天.我目前有以下代码,只按其唯一的日期时间对它们进行分组.

    SELECT ETK_ExpirationDateTime, COUNT(*) as TotalRows
    FROM History_Action 
    WHERE [State] = 4
    GROUP BY ETK_ExpirationDateTime
    ORDER BY ETK_ExpirationDateTime 
Run Code Online (Sandbox Code Playgroud)

是否有一个演员或我可以做的事情使这两个日期显示为一行总和?

Kra*_*ous 17

SELECT CAST(ETK_ExpirationDateTime AS DATE) AS DATE, COUNT(*) as TotalRows
FROM History_Action 
WHERE [State] = 4
GROUP BY CAST(ETK_ExpirationDateTime AS DATE)
ORDER BY 1
Run Code Online (Sandbox Code Playgroud)


dot*_*tom 5

您可以使用转换为日期:

SELECT CONVERT(date, ETK_ExpirationDateTime) as ExpirationDateTime, COUNT(*) as TotalRows
FROM History_Action 
WHERE [State] = 4
GROUP BY CONVERT(date, ETK_ExpirationDateTime)
ORDER BY CONVERT(date, ETK_ExpirationDateTime) 
Run Code Online (Sandbox Code Playgroud)

这仅适用于 SQL 2008 或更新版本。对于旧版本的 SQL,您可以使用一些棘手的操作,如下所示:

SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, ETK_ExpirationDateTime)) as ExpirationDateTime, COUNT(*) as TotalRows
FROM History_Action 
WHERE [State] = 4
GROUP BY DATEADD(dd, 0, DATEDIFF(dd, 0, ETK_ExpirationDateTime))
ORDER BY DATEADD(dd, 0, DATEDIFF(dd, 0, ETK_ExpirationDateTime))
Run Code Online (Sandbox Code Playgroud)