从一列中选择min(date),max(date)和group by-SQL

时间:2014-10-08 20:06:36

标签: sql sql-server max min

我很快就会疯了,请帮忙。

我有一列包含datetime值。

我需要每天都找到最小值和最大值。

数据看起来像这样

2012-11-23 05:49:26.000  
2012-11-23 07:55:43.000  
2012-11-23 13:59:56.000  
2012-11-26 07:51:13.000  
2012-11-26 10:23:31.000  
2012-11-26 10:25:09.000  
2012-11-26 16:22:22.000  
2012-11-27 07:30:03.000  
2012-11-27 08:53:47.000  
2012-11-27 10:40:55.000  

这是迄今为止尝试的内容

select distinct(convert(nvarchar, datum, 112)), min(datum), max(datum) 
from myTable

但是当我

Group by

我对所有3列进行分组......

我似乎无法将我的第一个选择设置为此

上的ColName和Group

这就是我想要的

20121123 | 2012-11-23 05:49:26.000 | 2012-11-23 13:59:56.000  
20121126 | 2012-11-26 07:51:13.000 | 2012-11-26 16:22:22.000  
20121127 | 2012-11-27 07:30:03.000 | 2012-11-27 10:40:55.000  

2 个答案:

答案 0 :(得分:10)

select
  min(datum), max(datum), CONVERT(varchar(8), datum, 112)
from
  dateTable
group by CONVERT(varchar(8), datum, 112)

这是fiddle

答案 1 :(得分:2)

在SQL Server 2008+中,您可以使用date数据类型而不是转换为字符串:

select cast(datum as date), min(datum), max(datum) 
from myTable
group by cast(datum as date);