2012-10-23 11 views
11

Ich habe eine Tabelle von 5000 Datensätze mit einer Datumsspalte.So finden Sie den Durchschnittswert in einer Spalte von Daten in SQL Server

Wie finde ich den Durchschnitt dieser Termine. Ich habe AVG(datefield) versucht, aber es sagt Operand data type datetime is invalid for avg operator

+0

http://www.bennadel.com/blog/175-Ask-Ben-Averaging-Date-Time-Stamps-In-SQL.htm – Dan

+0

Haben Sie versucht, es als float und dann AVG zu verwenden? Ich denke es kann funktionieren. –

Antwort

19

Wenn Sie nur durchschnittlich Datum wollen:

SELECT CAST(AVG(CAST(datefield AS INT)) AS DATETIME) FROM dates; 

Und wenn Sie Zeit betrachten wollen:

SELECT CAST(AVG(CAST(datefield AS FLOAT)) AS DATETIME) FROM dates; 

Siehe fiddle zu Prüfung.

+0

Ich erhalte ' Explizite Konvertierung vom Datentyp Datum zu Int ist nicht erlaubt.' – Fka

+0

@Fka: Ihre Tabelle verwendet Typ 'DATE' und nicht' DATETIME' wie in diesem Beispiel. Ich nehme an, Sie müssten es zuerst in 'DATETIME' umwandeln. –

+0

Wie kann es mit einem 'DateTime2' Typ gemacht werden? Der gleiche Guss erzeugt eine „Explicit Umwandlung von Datentyp datetime2 ist zu schweben nicht erlaubt.“ Error. – Tom

4
CONVERT(DATETIME, AVG(CONVERT(FLOAT, datefield))) as [AverageDate] 
Verwandte Themen