2

我想跟踪我的数据库中的用户,当他们被创建以在一个很棒的图表中显示它时。每个用户都有一个“已创建”列,即创建他们时的日期时间。一直到那天的时间。然而,对于我的图表,我并不真正关心时间,只关心日、月和年。当我使用 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 格式)和数字?

4

2 回答 2

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)
于 2013-10-29T10:30:30.243 回答
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 操作比强制转换更快...

于 2013-10-29T10:34:17.447 回答