SQL: aggregate functions with DATE type columns

sdds picture sdds · Jun 14, 2012 · Viewed 17.5k times · Source

I stumbled upon a question (in a test) about which aggregate functions are applicable to DATE type columns. So, as I understand it, COUNT will just count the number of rows, and MIN and MAX return the earliest/latest date. However, I'm a bit confused about SUM and AVG functions. Will they just convert the DATE values to ints and calculate sum/avg on those ints? Or am I wrong here? Anyway, is this behaviour consistent across all implementations of SQL? Thanks in advance.

Answer

Matthew picture Matthew · Jun 14, 2012

In MS SQL Server You cannot call the SUM operator on datetime types, nor can you call the AVG operator.

MSDN lists the return types of the SUM operator here:
http://msdn.microsoft.com/en-us/library/ms187810.aspx

It is also a valid reference for the types on which you may invoke the SUM operator.

EDIT: In response to your comment, you may use a site like sqlfiddle to test various implementations

http://www.sqlfiddle.com/#!3/22cee/1

Considering the backend storage of datetime is not standardized, I contend that it should not be depended upon for any database to return SUM or AVG results in predictable ways.... better not to do it at all...