Я знаю, что, по крайней мере, в некоторых стандартах SQL выражение значения (аргумент функции AVG ()) не может быть значением даты или времени или строковым значением. Я не читал все стандарты SQL, но был бы удивлен, если бы это ограничение ослабло за эти годы.
Частично, это потому, что «среднее» (или среднее арифметическое) значений «n» определяется как сумма значений, деленная на «n». И выражение «01-Jan-2012 08:00» + «03-Mar-2012 07:53» не имеет никакого смысла. '01-Январь-2012 08:00 '/ 3.
Продукты Microsoft давно и быстро работают с SQL, предоставляя внутреннее представление типов данных даты и времени. Деннис Ритчи назвал бы это «необоснованной болтовней с реализацией».
В более ранних версиях Microsoft Access (и, возможно, также в текущих версиях) вы могли бы умножить дату «01 января 2012 года» на дату «03 марта 2012 года» и получить фактическое возвращаемое значение, предположительно в единицы квадратных дат.
Если ваша база данных поддерживает тип данных «интервал», то усреднение является простым и делает то, что вы ожидаете. (SQL Server не поддерживает интервальные типы данных.)
create table test (
n interval hour to minute
);
insert into test values
('1:00'),
('1:30'),
('2:00');
select avg(n)
from test;
avg (interval)
--
01:30:00