Sql 如何在不考虑时间的情况下按日期时间列分组

Sql 如何在不考虑时间的情况下按日期时间列分组,sql,sql-server,tsql,sql-server-2008,Sql,Sql Server,Tsql,Sql Server 2008,我有一大堆产品订单,我试着按日期分组,并对该日期的数量求和。我如何在不考虑时间部分的情况下按月/日/年分组 3/8/2010 7:42:00应与3/8/2010 4:15:00 GROUP BY DATEADD(day, DATEDIFF(day, 0, MyDateTimeColumn), 0) 或者在SQL Server 2008以后的版本中,您可以按照@Oded的建议,简单地强制转换到日期: GROUP BY CAST(orderDate AS DATE) 通过将值设置为组的类型 GR

我有一大堆产品订单,我试着按日期分组,并对该日期的数量求和。我如何在不考虑时间部分的情况下按月/日/年分组

3/8/2010 7:42:00
应与
3/8/2010 4:15:00

GROUP BY DATEADD(day, DATEDIFF(day, 0, MyDateTimeColumn), 0)
或者在SQL Server 2008以后的版本中,您可以按照@Oded的建议,简单地强制转换到日期:

GROUP BY CAST(orderDate AS DATE)
通过将值设置为组的类型

GROUP BY CAST(myDateTime AS DATE)

在Sql 2008之前的版本中,删除日期部分:

GROUP BY CONVERT(CHAR(8),DateTimeColumn,10)

下面是一个例子,当我需要计算某个特定日期的记录数时,我使用了这个例子,没有时间部分:

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');

按日期分组(DATE\u time\u列)

我认为您需要在一年中的那一天按日期分组。 那么为什么不使用TRUNK_DATE函数呢。 其工作方式如下所述:

Group By DATE_TRUNC('day' , 'occurred_at_time')

强制转换日期时间字段到日期

select  CAST(datetime_field as DATE), count(*) as count from table group by CAST(datetime_field as DATE);

你知道我将如何对LINQ to SQL执行同样的操作吗?@Nick-不确定。尝试使用
DateTime.Date
-Linq to Sql:
DateTime.Date
-Entity Framework:
EntityFunctions.TruncateTime(myDateTime)
我同意,我是在一个ORM上下文中回复Muffin Man询问此事的。非常感谢……它解决了我的问题。增加了“按演员分组(日期修改为日期)”。别忘了在select cluase中添加相同的(CAST(date_modified AS date))。另请参阅类似的ORDER BY将不会按预期工作,因为它不会将其视为日期,因此它将按天排序,以了解有关转换函数和日期时间类型(字符(8)和10)的解释,请参阅date_trunc是针对PostgreSQL而非SQL Server的,根据标签,OP正在寻找SQL Server的解决方案。