【发布时间】:2011-09-13 22:36:53
【问题描述】:
是否可以编写一个按 datetime 数据类型分组但忽略时间部分(例如小时和分钟)的 Microsoft SQL 查询?
【问题讨论】:
-
什么版本的 SQL Server?对于这个特定的问题,它确实很重要。 (在所有版本的 SQL Server 中可能,但在 2008+ 有更好的解决方案)
-
@AndriyM - 按
datetime的date部分分组确实存在一个特定的优化问题,而不仅仅是截断日期部分。例如比较CREATE TABLE T1(D DATETIME2 PRIMARY KEY);CREATE TABLE T2(D DATE, T TIME, PRIMARY KEY(D,T));SELECT COUNT(*) FROM T1 GROUP BY CAST(D AS DATE) OPTION (ORDER GROUP);SELECT COUNT(*) FROM T2 GROUP BY D OPTION (ORDER GROUP)的计划 -
@MartinSmith:啊,好点子!这是一个很好的例子,证明了我在发现一个简单的重复时过度渴望,我的投票很接近!尽管如此,如果我今天在这个问题上遇到问题,我可能不会认识到你刚才指出的特殊性,所以感谢你为我(以及其他所有人)标记了差异。
标签: sql sql-server datetime time group-by