我正在尝试获取表格结果的平均日期(result.regDate as datetime)。我在代码后面找到了另一个主题:
SELECT CAST(AVG(CAST(regDate AS INT)) AS DATETIME) FROM result;
但是我得到了以下错误:
不允许将日期数据类型显式转换为float。
我做错事还是这句话是假的?
答案 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)
如果您正在使用其他日期时间数据类型(例如Date
或DateTime2
或SmallDateTime
),则需要在投射前将其强制转换为DateTime
它作为Float
- 然后将其强制转换回DateTime
(在调用AVG之后)之前隐式使用反对(或明确地转换为)另一个日期-Time数据类型。
这是" 傻瓜式" SQL:
CAST( AVG(CAST(CAST(regDate as DateTime) as Float)) as DateTime)
警告:如果您使用的日期超出了DateTime
数据类型支持的正常日期范围(即在1753
之前的任何时间),那么您将需要考虑不同的方法。