Интуитивно понятно, что вы спрашиваете, должно быть эквивалентно интервалу между первой и последней датами, деленному на число дат минус 1.
Позвольте мне объяснить более подробно.Представьте, что даты - это точки на линии (+
- это даты, -
- это отсутствие даты, первая дата - 12-е, и я изменил последнюю дату на 24 декабря для целей иллюстрации):
++----+---+-+
Теперь, что вы действительно хотите сделать, - это равномерно распределить даты между этими строками и определить, сколько времени проходит между каждой из них:
+--+--+--+--+
Чтобы сделать это, вы просто беретеколичество дней между последним и первым днями, в данном случае 24 - 12 = 12, и разделите его на количество интервалов, которые вы должны разнести, в данном случае 4: 12 / 4 = 3
.
С помощьюMySQL запрос
SELECT DATEDIFF(MAX(dt), MIN(dt)) / (COUNT(dt) - 1) FROM a;
Это работает для этой таблицы (с вашими значениями она возвращает 2,75):
CREATE TABLE IF NOT EXISTS `a` (
`dt` date NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `a` (`dt`) VALUES
('2010-12-12'),
('2010-12-13'),
('2010-12-18'),
('2010-12-22'),
('2010-12-24');