2014-10-08 6 views
5

Ich bin verrückt bald bitte helfen.Wählen Sie min (Datum), max (Datum) und gruppieren nach Tag aus einer Spalte - SQL

Ich habe eine Spalte mit datetime Werte.

Ich muss Min und Max für jeden Tag finden.

Die Daten sieht wie folgt aus

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 

Dies ist, was versucht, so weit

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

aber wenn ich

Group by 

I-Gruppe auf allen 3 Spalten ...

Ich scheint nicht zu s arbeiten et meine erste Auswahl als ColName und Gruppe auf diesen

Das ist, was ich will

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' ** IST ** der minimale Wert für alle o f am 23. November, genau wie 10:40:55 ist der Höchstwert für alle Termine am 27. November. Sie bekommen genau das, wonach Sie gefragt haben. die Min/Max-Zeitstempel für jeden Satz von "Tagen" in der Tabelle. –

+1

Welche Version von SQL Server? –

+1

@MarcB das sind die * gewünschten * Ergebnisse. Nicht die Ergebnisse, die sie tatsächlich erreichen. –

Antwort

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

Hier ist ein fiddle

2

In SQL Server 2008+ können Sie verwenden, um den date Datentyp anstatt in eine Zeichenkette zu konvertieren:

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