2012-10-23 79 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]