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)
您可以使用转换为日期:
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)