SQL Server:如何获得平均日期

时间:2017-05-16 13:49:11

标签: sql-server

我正在尝试获取表格结果的平均日期(result.regDate as datetime)。我在代码后面找到了另一个主题:

SELECT CAST(AVG(CAST(regDate AS INT)) AS DATETIME) FROM result;

但是我得到了以下错误:

  

不允许将日期数据类型显式转换为float。

我做错事还是这句话是假的?

3 个答案:

答案 0 :(得分:1)

您需要将其投放到float而不是int,请尝试:

SELECT CAST(AVG(CAST(regDate AS FLOAT)) AS DATETIME) FROM result

答案 1 :(得分:1)

以下代码返回平均值 - 但仅作为年份:

SELECT AVG(YEAR(regDate)) FROM results 

这帮助了我。

答案 2 :(得分:1)

如果您正在使用其他日期时间数据类型(例如DateDateTime2SmallDateTime),则需要在投射前将其强制转换为DateTime它作为Float - 然后将其强制转换回DateTime(在调用AVG之后)之前隐式使用反对(或明确地转换为)另一个日期-Time数据类型。

这是" 傻瓜式" SQL:

CAST( AVG(CAST(CAST(regDate as DateTime) as Float)) as DateTime)

警告:如果您使用的日期超出了DateTime数据类型支持的正常日期范围(即在1753之前的任何时间),那么您将需要考虑不同的方法。