2012-10-23 23 views
11

Mam tabelę 5000 rekordów z kolumną daty.Jak znaleźć średnią wartość w kolumnie dat w SQL Server

Jak znaleźć średnią z tych dat. Próbowałem AVG(datefield), ale mówi 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

Czy próbowałeś rzucić go jako float, a następnie użyć AVG? to może działać. –

Odpowiedz

19

Jeśli chcesz średnim terminie tylko:

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

A jeśli rozważyć czas:

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

Zobacz fiddle do test.

+0

Otrzymuję ' Jawna konwersja z daty typu danych na int jest niedozwolona." – Fka

+0

@Fka: Twoja tabela używa typu 'DATA', a nie' DATETIME', jak w tym przykładzie. Przypuszczam, że najpierw musisz przekonwertować go na "DATETIME". –

+0

Jak można tego dokonać przy użyciu typu 'DateTime2'? Ten sam odlew generuje "jawną konwersję z typu danych datetime2, aby dane zmiennopozycyjne były niedozwolone". błąd. – Tom

Powiązane problemy