2012-10-23 19 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

' データ型の日付からintへの明示的な変換は許可されていません。 ' – Fka

+0

@Fka:あなたのテーブルはこの例のように' DATE'型ではなく' DATETIME '型を使用しています。最初に 'DATETIME'に変換する必要があると思います。 –

+0

'DateTime2'タイプではどうすればいいですか?同じキャストは、 "データ型datetime2からfloatへの明示的な変換は許可されていません"を生成します。エラー。 – Tom

4
CONVERT(DATETIME, AVG(CONVERT(FLOAT, datefield))) as [AverageDate] 
関連する問題