Diese Anleitung zeigt eine genaue Methode zur Berechnung der Jahresdifferenz zwischen zwei Datumsangaben in einer MySQL-Datenbank. Der folgende SQL-Ausdruck bietet eine genaue Berechnung und berücksichtigt mögliche Komplexitäten von Schaltjahren:
<code class="language-sql">YEAR(date1) - YEAR(date2) - (DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d'))</code>
Dieser Ausdruck funktioniert wie folgt:
Jahresdifferenz: YEAR(date1) - YEAR(date2)
berechnet die anfängliche Jahresdifferenz.
Monat/Tag-Vergleich: DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d')
vergleicht die Monats- und Tageskomponenten beider Datumsangaben. Dieser Vergleich bestimmt, ob date1
früher im Jahr fällt als date2
.
Schaltjahranpassung: MySQL interpretiert das Vergleichsergebnis als 1 (wahr) oder 0 (falsch). Das Subtrahieren dieses Ergebnisses von der ursprünglichen Jahresdifferenz gewährleistet eine genaue Berechnung und berücksichtigt Fälle, in denen date1
chronologisch früher im selben Jahr liegt als date2
.
Beispiel:
Lassen Sie uns anhand von Beispieldaten veranschaulichen:
<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>
Die Abfrage:
<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>
Ergibt die korrekten Jahresdifferenzen:
<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>
Dieser Ansatz garantiert genaue Berechnungen der Jahresdifferenz, unabhängig von den jeweiligen Daten.
Das obige ist der detaillierte Inhalt vonWie berechnet man die Jahresdifferenz zwischen zwei Datumsangaben in MySQL genau?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!