Intuitivamente, ciò che stai chiedendo dovrebbe essere equivalente all'intervallo tra la prima e l'ultima data, diviso per il numero di date meno 1.
Lascia che ti spieghi più a fondo. Immagina che le date siano punti su una linea (+
sono presenti le date, -
mancano le date, la prima data è il 12 e ho cambiato l'ultima data al 24 dicembre a scopo illustrativo):
++----+---+-+
Ora, quello che vuoi davvero fare è distanziare uniformemente le date tra queste righe e scoprire quanto tempo è tra ciascuna di esse:
+--+--+--+--+
Per farlo, prendi semplicemente il numero di giorni tra l'ultimo e il primo giorno, in questo caso 24 - 12 =12, e lo dividi per il numero di intervalli che devi distanziare, in questo caso 4:12 / 4 = 3
.
Con una query MySQL
SELECT DATEDIFF(MAX(dt), MIN(dt)) / (COUNT(dt) - 1) FROM a;
Funziona su questa tabella (con i tuoi valori restituisce 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');