Mengira selang sebulan antara dua medan tarikh menimbulkan persamaan cabaran dalam MySQL. Satu pendekatan melibatkan penukaran tarikh kepada cap waktu Unix, membahagikannya dengan bilangan saat dalam sebulan (2,592,000) dan membundarkan kepada nombor bulat terdekat.
Walau bagaimanapun, penyelesaian yang lebih cekap wujud: TIMESTAMPDIFF( ) fungsi. TIMESTAMPDIFF() membolehkan anda membandingkan dua nilai TIMESTAMP, DATETIME atau DATE dan menentukan unit masa yang diingini untuk perbezaan itu.
Untuk mendapatkan perbezaan sepanjang bulan, nyatakan MONTH sebagai unit dalam parameter pertama:
SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-06-04'); -- Outputs: 0
TIMESTAMPDIFF() secara automatik mengambil kira panjang bulan yang berbeza-beza dan mempertimbangkan tahun lompat, menghapuskan keperluan untuk manipulasi tarikh manual.
Untuk ketepatan yang lebih tinggi, anda boleh memasukkan formula berikut:
SELECT TIMESTAMPDIFF(MONTH, startdate, enddate) + DATEDIFF( enddate, startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) MONTH ) / DATEDIFF( startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) + 1 MONTH, startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) MONTH )
Formula ini akan memberikan perwakilan perpuluhan bagi perbezaan sepanjang bulan, membolehkan perincian yang lebih besar .
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengira Perbezaan Bulan Antara Dua Tarikh Menggunakan MySQL dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!