Intuitivamente, o que você está perguntando deve ser equivalente ao intervalo entre a primeira e a última data, dividido pelo número de datas menos 1.
Deixe-me explicar mais detalhadamente. Imagine que as datas são pontos em uma linha (
+
são datas presentes, -
estão faltando datas, a primeira data é 12, e alterei a última data para 24 de dezembro para fins de ilustração):++----+---+-+
Agora, o que você realmente quer fazer é espaçar uniformemente suas datas entre essas linhas e descobrir quanto tempo há entre cada uma delas:
+--+--+--+--+
Para fazer isso, basta pegar o número de dias entre o último e o primeiro dia, neste caso 24 - 12 =12, e dividi-lo pelo número de intervalos que você precisa espaçar, neste caso 4:
12 / 4 = 3
. Com uma consulta MySQL
SELECT DATEDIFF(MAX(dt), MIN(dt)) / (COUNT(dt) - 1) FROM a;
Isso funciona nesta tabela (com seus valores, ele retorna 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');