2012-10-23 10 views
11

Ho una tabella di 5000 record con una colonna della data.Come trovare il valore medio in una colonna di date in SQL Server

Come trovo la media di quelle date. Ho provato AVG(datefield), ma si dice Operand data type datetime is invalid for avg operator

+0

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

+0

Hai provato a lanciarlo come float e quindi a utilizzare AVG? potrebbe funzionare. –

risposta

19

Se si desidera fino ad oggi solo media:

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

E se si vuole considerare il tempo:

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

Vedi fiddle a test.

+0

Ricevo ' La conversione esplicita dal tipo di dati data a int non è consentita. – Fka

+0

@Fka: la tabella utilizza il tipo' DATE' e non 'DATETIME' come in questo esempio. Suppongo che dovrai prima convertirlo in 'DATETIME'. –

+0

Come si può fare con un tipo 'DateTime2'? La stessa trasmissione genera una "conversione esplicita dal tipo di dati datetime2 al float non consentita". errore. – Tom

4
CONVERT(DATETIME, AVG(CONVERT(FLOAT, datefield))) as [AverageDate] 
Problemi correlati