Mehrere Möglichkeiten zum Berechnen des Alters anhand des Geburtstags in MySQL

Mehrere Möglichkeiten zum Berechnen des Alters anhand des Geburtstags in MySQL

Ich habe MySQL vorher nicht sehr oft verwendet und war mit MySQL-Funktionen nicht sehr vertraut. Als ich auf dieses Problem stieß, suchte ich auf Baidu und fand diese beiden Methoden. Diese beiden Methoden wurden im Baidu-Blog an erster Stelle aufgeführt.

Methode 1

SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birthday)), '%Y')+0 AS Alter

Der Autor weist auch auf den Fehler in Methode 1 hin, nämlich dass das Ergebnis 0 statt einer negativen Zahl ist, wenn das Datum in der Zukunft liegt. Hier werden 5 Funktionen und zwei Operatoren verwendet.

Methode 2

SELECT DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(Geburtstag, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(Geburtstag, '00-%m-%d')) AS Alter

Methode 2 löst das Problem der negativen Zahlen in Methode 1, sieht aber komplizierter aus; hier werden 6 Funktionen und 3 Operatoren verwendet.

Nachdem ich diesen Beitrag gelesen hatte, war ich verwirrt. Warum ist es so kompliziert? Früher war es sehr einfach, SQL Server zu verwenden. Ich bin der festen Überzeugung, dass es einen einfachen und effizienten Weg geben muss. Bald wurde eine gegenüber der obigen Methode verbesserte Methode gefunden.

Verbesserte Methode 1 und Methode 2

SELECT year( from_days( datediff( now( ), Geburtsdatum)));
SELECT YEAR(CURDATE())-YEAR(Geburtstag)-(RIGHT(CURDATE(),5)<RIGHT(Geburtstag,5));

Die verbesserte Methode 1 hat eine Funktion und einen Operator weniger. Wenn das Datum in der Zukunft liegt, ist das Berechnungsergebnis immer noch 0.
Die verbesserte Methode 2 hat immer noch 6 Funktionen und 3 Operatoren, was einfacher aussieht. Wenn man die fünf Ziffern rechts vom Datum nimmt und das Datumsformat „2013-01-01“ ist, ist das Ergebnis „01-01“, was in Ordnung ist. Wenn das Datumsformat das abgekürzte Format „2013-1-1“ ist, ist das Ergebnis „3-1-1“, was einen Fehler verursacht.

Dann fiel mir eine dritte Methode ein, die auf der Datumsfunktion im MySQL-Hilfedokument basiert:

Methode 3

Wählen Sie Floor(DATEDIFF(CURDATE(), @birthday)/365.2422)

Nehmen Sie die Anzahl der Tage zwischen Ihrem Geburtstag und dem aktuellen Datum, dividieren Sie diese durch die tatsächliche Anzahl der Tage eines Jahres (365 Tage, 5 Stunden, 48 Minuten und 46 Sekunden) und runden Sie anschließend auf. Dies geschieht mit nur drei Funktionen und einem Operator.

Dann fand ich schnell die vierte Methode auf einer ausländischen Website:

Methode 4

 Wählen Sie TIMESTAMPDIFF (JAHR, @Geburtstag, CURDATE ())

Bei dieser Methode werden zum Abschließen der Aufgabe nur zwei Funktionen verwendet. Dies dürfte die beste Methode sein.

Nach dem Testen der obigen vier Methoden ist das aktuelle Datum „13.01.2017“ und der Geburtstag „14.01.2013“, also ist es nur noch ein Tag bis zum Geburtstag und nur noch ein Tag bis zum vierten Geburtstag. Das Ergebnis ist aber immer noch 3 Jahre alt, was nicht sinnvoll erscheint. Ändern Sie Methode 3 und runden Sie sie ab, um Methode 5 zu erhalten:

Methode 5

Wählen Sie runden (DATEDIFF (aktuelles Datum (), @Geburtstag) / 365,2422)

Das auf diese Weise berechnete Alter kommt dem tatsächlichen Alter am nächsten, aber Methode vier dürfte der Altersdefinition am ehesten entsprechen.

Zusammenfassen

Oben habe ich Ihnen die Berechnung des Alters anhand des Geburtstags in MySQL vorgestellt. Ich hoffe, es wird Ihnen helfen. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!

Das könnte Sie auch interessieren:
  • PostgreSQL-Operation zum Ermitteln des Alters anhand des Geburtsdatums
  • MySQL-Beispiel zum Umwandeln des Geburtsdatums in das Alter und zum Gruppieren und Zählen der Personenanzahl
  • SQL-Beispielcode für die Funktion „Alter anhand Datum beurteilen“

<<:  Detaillierte Erklärung der jQuery-Kettenaufrufe

>>:  Detaillierte Erläuterung der Animationsmethode „Animate“ von jQuery und der Lösung für das Problem der Animationswarteschlange

Artikel empfehlen

Richtige Schritte zur Installation von Nginx unter Linux

Vorwort Wenn Sie wie ich ein fleißiger Java-Backe...

Wer ist ein User Experience Designer?

Beängstigend, nicht wahr? Übersetzung im Bild: (v...

Zusammenfassung verschiedener Methoden zur MySQL-Datenwiederherstellung

Inhaltsverzeichnis 1. Einleitung 2. Direkte Wiede...

So führen Sie Linux-Shell-Befehle in Docker aus

Um einen Shell-Befehl in Docker auszuführen, müss...

Fallstudie zur Übermittlung von HTML-Formularen

Um die Methode zur Formularübermittlung zusammenz...

So verwalten Sie Benutzer und Gruppen beim Ausführen von Docker

Docker ist ein Verwaltungstool, das Prozesse als ...

Eine ausführliche Diskussion zur Detailanalyse im Webdesign

Bei der Designarbeit höre ich oft, dass an der Übe...

Einführung in die Verwendung des MySQL mysqladmin-Clients

Inhaltsverzeichnis 1. Überprüfen Sie den Status d...

Verwenden von Schleifen in awk

Lernen wir verschiedene Arten von Schleifen kenne...

MySQL-Trigger: ausführliche Erklärung und einfaches Beispiel

Einfaches Beispiel für einen MySQL-Trigger Gramma...

VUE+Canvas realisiert den gesamten Prozess eines einfachen Gobang-Spiels

Vorwort In Bezug auf das Layout ist Gobang viel e...