直观地,你所要求的应该等于第一个和最后一个日期之间的间隔,除以日期数减1.
让我更彻底地解释.想象一下,日期是一行上的点数(是存在的日期, – 缺少日期,第一个日期是第12个日期,我将最后一个日期更改为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');