我有一个包含5000个记录和日期列的表.
我如何找到这些日期的平均值.我试过了AVG(datefield),但它说Operand data type datetime is invalid for avg operator
Fra*_*s P 24
如果您只想平均日期:
SELECT CAST(AVG(CAST(datefield AS INT)) AS DATETIME) FROM dates;
Run Code Online (Sandbox Code Playgroud)
如果你想考虑时间:
SELECT CAST(AVG(CAST(datefield AS FLOAT)) AS DATETIME) FROM dates;
Run Code Online (Sandbox Code Playgroud)
看小提琴测试.
小智 8
对于那些遇到转换错误的人(无法将日期转换为 int 或 float)...这是一个使用datediff和的简单解决方案dateadd
SELECT
DATEADD(DAY, AVG(DATEDIFF(DAY, '1900-01-01', datefield)), '1900-01-01') AS [AverageDate]
FROM dates;
Run Code Online (Sandbox Code Playgroud)
请注意,1900 年 1 月 1 日日期是任意的,只需两个位置相同即可。
CONVERT(DATETIME, AVG(CONVERT(FLOAT, datefield))) as [AverageDate]
Run Code Online (Sandbox Code Playgroud)