25

日付列を持つ 5000 レコードのテーブルがあります。

これらの日付の平均を見つけるにはどうすればよいですか。試してみましAVG(datefield)たが、それは言うOperand data type datetime is invalid for avg operator

4

4 に答える 4

39

日付のみを平均化する場合:

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

そして、時間を考慮したい場合:

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

テストするにはフィドルを参照してください。

于 2012-10-23T13:50:05.277 に答える
7
CONVERT(DATETIME, AVG(CONVERT(FLOAT, datefield))) as [AverageDate] 
于 2012-10-23T13:47:33.227 に答える
0

私はこれを作ったので、将来他の人に役立つことを願っています! SQL は、これを簡単にしないことに悪臭を放っています。

Declare @Day as int;
Declare @Month as int;
Declare @Year as int;
Declare @Date as varchar(50);
SET @Day = (SELECT AVG(DAY(Column_name)) FROM Table_Name)
SET @Month = (SELECT AVG(MONTH(Column_name)) FROM Table_Name)
SET @Year = (SELECT AVG(YEAR(Column_name)) FROM Table_Name)
SET @Date =  CAST(@Day as varchar) +'-' + CAST(@Month as varchar) + '-' + CAST(@Year as varchar);
SELECT CONVERT(datetime2,@Date,103)
于 2021-02-09T18:32:20.577 に答える