我如何按天分组,仍然可以返回日期时间?

时间:2013-10-29 10:27:34

标签: sql sql-server

我想跟踪我的数据库中的用户,当他们被创建以在一个很棒的图表中显示它时。每个用户都有一个“Created”列,它是创建时的DateTime。一直到那天的时间。 但是,对于我的图表,我真的不关心时间,只关注日,月和年。当我使用datepart时,有没有办法可以返回日期时间和计数:

SELECT datepart(year,Created), datepart(month,Created), datepart(day,Created), COUNT(*) AS COUNT
FROM [dbms].[User]
GROUP BY datepart(year,Created), datepart(month,Created), datepart(day,Created)

这将返回年,月和日的三列。有什么方法可以让它变得性感并让它返回DateTime(以YYYY / MM / DD格式)和cound?

2 个答案:

答案 0 :(得分:3)

如果您使用的是SQL Server 2008或更高版本,则可以利用date数据类型。

SELECT cast(Created as date), COUNT(*) AS COUNT
FROM [dbms].[User]
GROUP BY cast(Created as date)

如果您使用的是SQL Server 2005或更早版本:

SELECT dateadd(day,datediff(day,0,Created), 0), COUNT(*) AS COUNT
FROM [dbms].[User]
GROUP BY dateadd(day,datediff(day,0,Created), 0)

答案 1 :(得分:1)

您可以尝试以下操作:

SELECT dateadd(day, datediff(day, 0, Created), 0) as date, COUNT(*) AS COUNT
FROM [dbms].[User]
GROUP BY dateadd(day, datediff(day, 0, Created), 0)

这将在没有时间的情况下按创建日期对用户进行分组,并且可以在每个版本的SQL Server上运行。其中,Dateadd操作比投射更快......