Подводя итоги практического вопроса:
Мне нужно запросить средний год из столбца datetime
.Мое первоначальное решение было YEAR(AVG())
все даты.Но так как я не могу AVG()
a datetime
, я конвертирую даты в unix, а затем обратно в datetime:
SELECT
YEAR(FROM_UNIXTIME(AVG(UNIX_TIMESTAMP(date1))))
FROM table1;
, который возвращает 1980
Правильный запрос:
SELECT
ROUND(AVG(YEAR(date1)))
FROM table1;
Что возвращает 1960
Второй запрос лучше по понятным причинам, но почему результаты отличаются?