2014-10-08 3 views
5

Я скоро схожу с ума, пожалуйста, помогите.Выберите min (date), max (date) и group by day из одного столбца - SQL

У меня есть одна колонка, содержащая значения 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 

I группа на всех 3-х колонок ...

Кажется, я не работаю с s и др мой первый выбор в качестве ColName и группы по этому

Это то, что я хочу

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 
+0

'2012-11-23 05: 49: 26 ** ** IS ** минимальное значение для всех o f 23 ноября, так же как 10:40:55 - максимальное значение для всех дат 27 ноября. Вы получаете именно то, о чем просили. минимальные временные метки для каждого набора «дней» в таблице. –

+1

Какая версия SQL Server? –

+1

@MarcB - это * желаемый * результаты. Не те результаты, которые они фактически достигают. –

ответ

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

Вот fiddle

2

В SQL Server 2008+, вы можете использовать тип данных date вместо преобразования в строку символов:

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