Theo trực giác, những gì bạn đang hỏi phải tương đương với khoảng thời gian giữa ngày đầu tiên và ngày cuối cùng, chia cho số ngày trừ đi 1.
Để tôi giải thích cặn kẽ hơn. Hãy tưởng tượng ngày là các điểm trên một dòng (+
là ngày tháng, -
có thiếu ngày không, ngày đầu tiên là ngày 12 và tôi đã thay đổi ngày cuối cùng thành ngày 24 tháng 12 cho mục đích minh họa):
++----+---+-+
Bây giờ, điều bạn thực sự muốn làm là khoảng cách đều các ngày của bạn giữa các dòng này và tìm khoảng thời gian giữa mỗi dòng:
+--+--+--+--+
Để làm điều đó, bạn chỉ cần lấy số ngày giữa ngày cuối cùng và ngày đầu tiên, trong trường hợp này là 24 - 12 =12 và chia nó cho số khoảng thời gian bạn có khoảng trắng, trong trường hợp này là 4:12 / 4 = 3
.
Với truy vấn MySQL
SELECT DATEDIFF(MAX(dt), MIN(dt)) / (COUNT(dt) - 1) FROM a;
Điều này hoạt động trên bảng này (với các giá trị của bạn, nó trả về 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');