Я более знаком с СУБД не-MS, но ... Поскольку вы не можете добавить два значения DATETIME, вы не можете их усреднить. Тем не менее, вы можете сделать что-то похожее на:
SELECT AVG(datetime_column - TIMESTAMP '2000-01-01 00:00:00.000000') +
TIMESTAMP '2000-01-01 00:00:00.000000'
FROM table_containing_datetime_column;
Это вычисляет средний интервал между началом 2000 года и фактическими значениями даты и времени, а затем добавляет этот интервал к началу 2000 года. Выбор «начала 2000 года» является произвольным; до тех пор, пока дата и время, вычтенные из функции AVG (), добавлены обратно, вы получите разумный ответ.
Предполагается, что используемая СУБД поддерживает стандартную нотацию «timestamp» в SQL и, соответственно, поддерживает типы INTERVAL. Разница между двумя значениями DATETIME или TIMESTAMP должна быть ИНТЕРВАЛОМ (действительно, INTERVAL DAY (9) TO SECOND (6), чтобы быть умеренно точным, хотя '9' является спорным).
При соответствующей корректировке для СУБД, с которой я работаю, выражение «работает»:
CREATE TEMP TABLE table_containing_datetime_column
(
datetime_column DATETIME YEAR TO FRACTION(5) NOT NULL
);
INSERT INTO table_containing_datetime_column VALUES('2008-11-19 12:12:12.00000');
INSERT INTO table_containing_datetime_column VALUES('2008-11-19 22:22:22.00000');
SELECT AVG(datetime_column - DATETIME(2000-01-01 00:00:00.00000) YEAR TO FRACTION(5)) +
DATETIME(2000-01-01 00:00:00.00000) YEAR TO FRACTION(5)
FROM table_containing_datetime_column;
Ответ:
2008-11-19 17:17:17.00000