Secara intuitif, apa yang Anda tanyakan harus setara dengan interval antara tanggal pertama dan terakhir, dibagi dengan jumlah tanggal dikurangi 1.
Biar saya jelaskan lebih teliti. Bayangkan tanggal adalah titik pada sebuah garis (+
apakah ada tanggal, -
ada tanggal yang hilang, tanggal pertama adalah tanggal 12, dan saya mengubah tanggal terakhir menjadi tanggal 24 Desember untuk tujuan ilustrasi):
++----+---+-+
Sekarang, yang benar-benar ingin Anda lakukan adalah memberi jarak secara merata pada tanggal Anda di antara garis-garis ini, dan temukan berapa lama jarak antara setiap tanggal:
+--+--+--+--+
Untuk melakukannya, Anda cukup mengambil jumlah hari antara hari terakhir dan hari pertama, dalam hal ini 24 - 12 =12, dan membaginya dengan jumlah interval yang harus Anda beri spasi, dalam hal ini 4:12 / 4 = 3
.
Dengan kueri MySQL
SELECT DATEDIFF(MAX(dt), MIN(dt)) / (COUNT(dt) - 1) FROM a;
Ini berfungsi di tabel ini (dengan nilai Anda mengembalikan 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');