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

Fallstudie zu JavaScript-Funktionsaufrufen, Apply- und Bind-Methoden

Zusammenfassen 1. Ähnlichkeiten Beide können den ...

In WMP eingebettetes HTML, kompatibel mit Chrome und IE, detaillierte Einführung

Tatsächlich gibt es viele entsprechende Schreibme...

Korrekte Änderungsschritte für das Standardnetzwerksegment von Docker

Hintergrund Ein Kollege arbeitet an seinem Sicher...

So ändern Sie den iTunes-Sicherungspfad unter Windows

0. Vorbereitung: • Schließen Sie iTunes • Beenden...

Der Implementierungsprozess der ECharts Multi-Chart-Verknüpfungsfunktion

Wenn viele Daten angezeigt werden müssen, ist die...

Schreiben Sie ein React-ähnliches Framework von Grund auf

Kürzlich habe ich im Internet den Artikel „Build ...

So fragen Sie die Schnittmenge von Zeiträumen in MySQL ab

Mysql-Abfragezeitraum-Schnittmenge Anwendungsszen...

So implementieren Sie einen Animationsübergangseffekt im Frontend

Inhaltsverzeichnis Einführung Traditionelle Überg...

Prinzip des Linux-Nohup-Befehls und Beispielanalyse

nohup-Befehl Bei der Verwendung von Unix/Linux mö...

Es ist ganz einfach zu verstehen, was Node.js ist

Inhaltsverzeichnis Offizielle Einführung in Node....