Intuicyjnie to, o co prosisz, powinno odpowiadać odstępowi między pierwszą a ostatnią datą, podzielonemu przez liczbę dat minus 1.
Pozwólcie, że wyjaśnię dokładniej. Wyobraź sobie, że daty są punktami na linii (+
czy są obecne daty, -
brakuje dat, pierwsza data to 12, a ostatnią datę zmieniłem na 24 grudnia w celach ilustracyjnych):
++----+---+-+
Teraz to, co naprawdę chcesz zrobić, to równomiernie rozmieścić daty między tymi wierszami i dowiedzieć się, jak długo jest między nimi:
+--+--+--+--+
Aby to zrobić, po prostu weź liczbę dni między ostatnim a pierwszym dniem, w tym przypadku 24 - 12 =12, i podziel ją przez liczbę interwałów, które musisz rozdzielić, w tym przypadku 4:12 / 4 = 3
.
Za pomocą zapytania MySQL
SELECT DATEDIFF(MAX(dt), MIN(dt)) / (COUNT(dt) - 1) FROM a;
To działa na tej tabeli (z twoimi wartościami zwraca 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');