Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengira Perbezaan Tahun dengan Tepat Antara Dua Tarikh dalam MySQL?
Panduan ini menunjukkan kaedah yang tepat untuk mengira perbezaan tahun antara dua tarikh dalam pangkalan data MySQL. Ungkapan SQL berikut menyediakan pengiraan yang tepat, mengendalikan potensi kerumitan tahun lompat:
<code class="language-sql">YEAR(date1) - YEAR(date2) - (DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d'))</code>
Ungkapan ini berfungsi seperti berikut:
Perbezaan Tahun: YEAR(date1) - YEAR(date2)
mengira perbezaan tahun awal.
Perbandingan Bulan/Hari: DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d')
membandingkan komponen bulan dan hari kedua-dua tarikh. Perbandingan ini menentukan sama ada date1
jatuh lebih awal pada tahun ini daripada date2
.
Pelarasan Tahun Lompat: MySQL mentafsirkan hasil perbandingan sebagai 1 (benar) atau 0 (salah). Menolak keputusan ini daripada perbezaan tahun awal memastikan pengiraan yang tepat, melaraskan untuk keadaan di mana date1
lebih awal secara kronologi dalam tahun yang sama dengan date2
.
Contoh:
Mari kita menggambarkan dengan sampel data:
<code class="language-sql">CREATE TABLE so7749639 (date1 DATE, date2 DATE); INSERT INTO so7749639 VALUES ('2011-07-20', '2011-07-18'), ('2011-07-20', '2010-07-20'), ('2011-06-15', '2008-04-11'), ('2011-06-11', '2001-10-11'), ('2007-07-20', '2004-07-20');</code>
Pertanyaan:
<code class="language-sql">SELECT date1, date2, YEAR(date1) - YEAR(date2) - (DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d')) AS diff_years FROM so7749639;</code>
Menghasilkan perbezaan tahun yang betul:
<code>+------------+------------+------------+ | date1 | date2 | diff_years | +------------+------------+------------+ | 2011-07-20 | 2011-07-18 | 0 | | 2011-07-20 | 2010-07-20 | 1 | | 2011-06-15 | 2008-04-11 | 3 | | 2011-06-11 | 2001-10-11 | 9 | | 2007-07-20 | 2004-07-20 | 3 | +------------+------------+------------+</code>
Pendekatan ini menjamin pengiraan perbezaan tahun yang tepat tanpa mengira tarikh tertentu yang terlibat.
Atas ialah kandungan terperinci Bagaimana untuk Mengira Perbezaan Tahun dengan Tepat Antara Dua Tarikh dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!