2012-10-23 76 views
11

Tôi có một bảng gồm 5000 bản ghi có cột ngày.Cách tìm giá trị trung bình trong cột ngày trong SQL Server

Làm cách nào để tìm mức trung bình của những ngày đó. Tôi đã thử AVG(datefield), nhưng nó nói 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

Bạn đã cố gắng truyền nó thành phao và sau đó sử dụng AVG? Tôi nghĩ nó có thể hoạt động. –

Trả lời

19

Nếu bạn chỉ muốn ngày trung bình:

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

Và nếu bạn muốn xem xét thời gian:

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

Xem fiddle để kiểm tra.

+0

Tôi nhận được ' Chuyển đổi rõ ràng từ ngày kiểu dữ liệu thành int không được phép.' – Fka

+0

@Fka: Bảng của bạn đang sử dụng loại 'DATE' và không phải' DATETIME' như trong ví dụ này. Tôi cho rằng bạn sẽ cần phải chuyển nó sang 'DATETIME' trước. –

+0

Làm thế nào nó có thể được thực hiện với một loại 'DateTime2'? Cast tương tự tạo ra "Chuyển đổi rõ ràng từ datetime2 kiểu dữ liệu sang float không được phép." lỗi. – Tom

Các vấn đề liên quan