Intuitivement, ce que vous demandez doit être équivalent à l'intervalle entre la première et la dernière date, divisé par le nombre de dates moins 1.
Permettez-moi de vous expliquer plus en profondeur. Imaginez les dates sont des points sur une ligne (+
sont les dates actuelles, -
sont les dates manquantes, la première date est le 12, et j'ai changé la dernière date de 24 décembre à des fins d'illustration):
++----+---+-+
Maintenant, ce vous voulez vraiment faire, est espacer également vos dates entre ces lignes, et de trouver combien de temps il est entre chacun d'eux:
+--+--+--+--+
pour ce faire, vous prenez simplement le nombre de jours entre le dernier et le premier jours, dans ce cas 24 - 12 = 12, et le diviser par le nombre d'intervalles que vous devez espacer, dans ce cas 4: 12/4 = 3
.
Avec une requête MySQL
SELECT DATEDIFF(MAX(dt), MIN(dt))/(COUNT(dt) - 1) FROM a;
Cela fonctionne sur cette table (avec vos valeurs renvoyées 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');
Cela sera beaucoup plus facile sans le faire en SQL. Pourquoi avez-vous besoin de le faire en SQL? – jwueller
Parce que cela semble être une chose amusante à faire. J'ai déjà implémenté ceci avec ma fonction PHP. Mais je suis curieux de voir si cela peut être fait avec MySQL sans un impact significatif sur les performances. – HyderA
tout d'abord vous devez calculer diff entre 2 lignes regarder: http://stackoverflow.com/questions/3017468 –