Jahresdifferenz anhand des MySQL-Datums berechnen
Die Bestimmung der Jahresdifferenz zwischen zwei Datumsangaben ist eine häufige Aufgabe in MySQL. Dieser Artikel bietet eine effiziente Einzelausdruckslösung, die Schaltjahre berücksichtigt.
Problemstellung:
Gegeben zwei Datumsangaben im folgenden Format: „JJJJ-MM-TT“, müssen wir die Jahresdifferenz berechnen. Zum Beispiel:
Lösung:
<code class="language-sql">YEAR(date1) - YEAR(date2) - (DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d'))</code>
Anleitung:
YEAR(date1) - YEAR(date2)
Berechnen Sie die Jahresdifferenz. DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d')
Vergleicht die Monats- und Tagesteile zweier Datumsangaben. Der Ausdruck wird als wahr (1) ausgewertet, wenn der Tag des Monats date1
kleiner als der Tag des Monats date2
ist, andernfalls als falsch (0). Beispiel:
Die folgende Abfrage berechnet die Jahresdifferenz für einen bestimmten Testfall:
<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 ( SELECT '2011-07-20' AS date1, '2011-07-18' AS date2 UNION ALL SELECT '2011-07-20', '2010-07-20' UNION ALL SELECT '2011-06-15', '2008-04-11' UNION ALL SELECT '2011-06-11', '2001-10-11' UNION ALL SELECT '2007-07-20', '2004-07-20' ) AS dates;</code>
Ausgabe:
<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>
Das obige ist der detaillierte Inhalt vonWie kann man mithilfe von MySQL den Altersunterschied in Jahren zwischen zwei Daten effizient berechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!