我想跟踪我的数据库中的用户,当他们被创建以在一个很棒的图表中显示它时。每个用户都有一个“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?
答案 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操作比投射更快......