Heim > Datenbank > MySQL-Tutorial > Wie kann man mithilfe von MySQL den Altersunterschied in Jahren zwischen zwei Daten effizient berechnen?

Wie kann man mithilfe von MySQL den Altersunterschied in Jahren zwischen zwei Daten effizient berechnen?

Susan Sarandon
Freigeben: 2025-01-09 18:17:41
Original
169 Leute haben es durchsucht

How to Efficiently Calculate the Age Difference in Years Between Two Dates Using MySQL?

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:

  • 20.07.2011 - 18.07.2011 => 0 Jahre
  • 20.07.2011 - 20.07.2010 => 1 Jahr
  • 2011-06-15 - 2008-04-11 => 3 Jahre
  • 2011-06-11 - 2001-10-11 => 9 Jahre

Lösung:

<code class="language-sql">YEAR(date1) - YEAR(date2) - (DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d'))</code>
Nach dem Login kopieren

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).
  • Durch Subtrahieren eines wahren oder falschen Werts (1 oder 0) wird das Ergebnis entsprechend angepasst.

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage