Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengira Perbezaan Tahun dengan Tepat Antara Dua Tarikh dalam MySQL?

Bagaimana untuk Mengira Perbezaan Tahun dengan Tepat Antara Dua Tarikh dalam MySQL?

DDD
DDDasal
2025-01-09 18:39:41492semak imbas

How to Accurately Calculate the Year Difference Between Two Dates in MySQL?

Mengira Perbezaan Tahun Antara 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:

  1. Perbezaan Tahun: YEAR(date1) - YEAR(date2) mengira perbezaan tahun awal.

  2. 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.

  3. 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn