【发布时间】:2011-08-28 14:09:02
【问题描述】:
我有一堆产品订单,我正在尝试按日期分组并汇总该日期的数量。如何在不考虑时间部分的情况下按月/日/年分组?
3/8/2010 7:42:00 应与3/8/2010 4:15:00 分组
【问题讨论】:
-
另见类似group per hour
标签: sql sql-server tsql sql-server-2008
我有一堆产品订单,我正在尝试按日期分组并汇总该日期的数量。如何在不考虑时间部分的情况下按月/日/年分组?
3/8/2010 7:42:00 应与3/8/2010 4:15:00 分组
【问题讨论】:
标签: sql sql-server tsql sql-server-2008
Cast/Convert 将值转换为 Date 类型的分组依据。
GROUP BY CAST(myDateTime AS DATE)
【讨论】:
DateTime.Date。
DateTime.Date - 实体框架:EntityFunctions.TruncateTime(myDateTime)
GROUP BY DATEADD(day, DATEDIFF(day, 0, MyDateTimeColumn), 0)
或者在 SQL Server 2008 之后,您可以按照@Oded 的建议简单地转换为Date:
GROUP BY CAST(orderDate AS DATE)
【讨论】:
在pre Sql 2008中通过取出日期部分:
GROUP BY CONVERT(CHAR(8),DateTimeColumn,10)
【讨论】:
GROUP BY DATE(date_time_column)
【讨论】:
CAST 日期时间字段到日期
select CAST(datetime_field as DATE), count(*) as count from table group by CAST(datetime_field as DATE);
【讨论】:
下面是一个示例,当我需要计算不带时间部分的特定日期的记录数时:
select count(convert(CHAR(10), dtcreatedate, 103) ),convert(char(10), dtcreatedate, 103)
FROM dbo.tbltobecounted
GROUP BY CONVERT(CHAR(10),dtcreatedate,103)
ORDER BY CONVERT(CHAR(10),dtcreatedate,103)
【讨论】:
这是在 oracle 中运行良好的示例
select to_char(columnname, 'DD/MON/yyyy'), count(*) from table_name group by to_char(createddate, 'DD/MON/yyyy');
【讨论】:
嗯,对我来说这很直接,我使用了 groupby 演员:
例子:
Select cast(created_at as date), count(1) from dbname.tablename GROUP BY cast(created_at as date)
注意:我在 MSSQL 2016 上使用它。
【讨论】:
我相信您需要在一年中的那一天进行分组。 那么为什么不使用 TRUNK_DATE 函数。 它的工作方式如下所述:
Group By DATE_TRUNC('day' , 'occurred_at_time')
【讨论】: