2012-10-23 70 views
11

我有一個包含日期列的5000條記錄的表。如何在SQL Server中查找日期列中的平均值

如何查找這些日期的平均值。我試過AVG(datefield),但它說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

您是否嘗試將其轉換爲浮點型然後使用AVG?我認爲它可能有效。 –

回答

19

如果您只想平均日期:

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

如果你要考慮時間:

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

fiddle到測試。

+0

我收到' 不允許顯式從數據類型date到int的轉換。# – Fka

+0

@Fka:您的表格使用DATE類型而不是DATETIME,如本例所示。我想你需要先把它轉換成DATETIME。 –

+0

如何用'DateTime2'類型來完成?同一個Cast會生成「從數據類型datetime2到float的顯式轉換是不允許的。」錯誤。 – Tom

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