Интуитивно това, което питате, трябва да е еквивалентно на интервала между първата и последната дата, разделен на броя на датите минус 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');