sql:按日期忽略时间的服务器组数据

时间:2013-10-05 09:18:40

标签: sql-server

我的表格中有一个类型为日期时间

的列
select * from mytable group by dateadded

但我希望我的group by忽略日期时间的时间值并仅使用日期部分。然后

2013-10-05 12:14:15
2013-10-05 19:15:20

两者都与

相同
 2013-10-05 00:00:00 

并且记录将按天分组。我的意思是所有在一天内添加的记录都在同一组中。

2 个答案:

答案 0 :(得分:2)

select * from mytable 
group by CONVERT(date, dateadded)

答案 1 :(得分:0)

juergen的答案适用于SQL Server 2008及更高版本。对于SQL Server 2005及更低版本,请使用:

select * from mytable
group by DATEDIFF(d, dateadded, '1900-01-01')

或稍微hackish但功能完善:

select * from mytable
group by convert(int, dateadded)

这些示例显然 none 实际上有效,因为select *group by不兼容。 select列表只需要group by中的表达式或其他表达式的聚合。