SQL Server GROUP BY datetime忽略小时分钟和具有日期和总和值的选择

Ste*_*ven 76 sql-server select datetime group-by

我有一个有两个字段的表 - datetimeint.我想datetime在忽略小时和分钟的日期上做一个小组.该SELECT语句应返回一个映射到一天int的总和的日期.

JNK*_*JNK 120

SELECT CAST(Datetimefield AS DATE) as DateField, SUM(intfield) as SumField
FROM MyTable
GROUP BY CAST(Datetimefield AS DATE)
Run Code Online (Sandbox Code Playgroud)

  • 这仅适用于SQL Server 2008+(引入Date数据类型时).如果你是在2005年或更早,更改转换为转换(转换(int,Datetimefield),datetime)应该工作. (11认同)
  • @Steven - 然后看Derek的评论.这就是为什么在问题中加入**版本**是个好主意. (5认同)

rab*_*dde 24

由于他没有指定他使用的SQL服务器版本(date类型在2005年不可用),因此也可以使用

SELECT CONVERT(VARCHAR(10),date_column,112),SUM(num_col) AS summed
FROM table_name
GROUP BY CONVERT(VARCHAR(10),date_column,112)
Run Code Online (Sandbox Code Playgroud)


小智 6

我来研究我必须要做的选择,但是,我相信我使用的方法是最简单的:

SELECT COUNT(*), 
       DATEADD(dd, DATEDIFF(dd, 0, date_field),0) as dtgroup 
FROM TABLE 
GROUP BY DATEADD(dd, DATEDIFF(dd, 0, date_field),0) 
ORDER BY dtgroup ASC;
Run Code Online (Sandbox Code Playgroud)