Sql 按日期分组,不含时间

Sql 按日期分组,不含时间,sql,sql-server,group-by,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 O

我想知道,在计算日期时,是否有办法将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 

我可以做些什么来让上面的两个日期显示为一行,总金额是多少?

您可以使用日期转换:

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
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) 
这仅适用于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))

您使用的是哪种数据库管理系统?sql server mysqlI正在使用sql server可能与^I重复。我最初尝试使用它,但在筛选某个列时无法确定如何使用。是的,但请执行。