Я имел удивительный успех, используя Drupal в качестве фреймворка для веб-приложений. Он очень расширяемый - почти каждое поведение по умолчанию может быть легко переопределено с помощью модулей, и это довольно чистый лист для начала.
Drupal 7 имеет встроенное модульное тестирование , и более ранние версии могут легко это сделать с помощью плагина .
Это кажется немного хакерским, но будет работать для дат между 1970 и 2030 годами (на 32-битной арке). По сути, вы преобразуете значения datetime в целые числа, усредняете их и конвертируете среднее значение обратно в значение datetime.
SELECT
from_unixtime(
avg(
unix_timestamp(date_one)-unix_timestamp(date_two)
)
)
FROM
some_table
WHERE
some-restriction-applies
Вероятно, есть лучшее решение, но оно поможет вам в крайнем случае.
SELECT date_one + (date_two - date_one) / 2 AS average_date
FROM thetable
WHERE whatever
Вы не можете суммировать даты, но вы можете вычесть их и получить временной интервал, который можно уменьшить вдвое и прибавить к первой дате.
думая вслух, вы можете выполнить датировку в минутах от установленного времени, усреднить это значение, а затем добавить эти минуты обратно к установленному времени ...
AVG - это функция группирования, что означает, что она суммирует все строки в таблице и делит их на количество строк. Но похоже, что вам нужно среднее значение двух разных столбцов, сообщаемое индивидуально для каждой строки. В этом случае вы должны просто вычислить это самостоятельно: (date1 + date2) / 2. (MySQL может потребоваться дополнительный синтаксис для правильного добавления этих столбцов.)
Написанный вами код даст вам среднее прошедшее время таблицы между датами date1 и date2.