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

Transkript der Implementierung berechneter Vue-Eigenschaften

In diesem Artikel wird das Implementierungszeugni...

HTML-Subtag und Sup-Tag

Heute stelle ich zwei HTML-Tags vor, die ich nich...

Tutorial zur Installation und Verwendung von virtualenv in Deepin

virtualenv ist ein Tool zum Erstellen isolierter ...

So reduzieren Sie die Bildgröße mithilfe des mehrstufigen Docker-Builds

In diesem Artikel wird beschrieben, wie Sie die m...

Methoden und Techniken zur Gestaltung einer interessanten Website (Bild)

Haben Sie schon einmal eine Situation erlebt, in d...

Vier Modi zum Öffnen und Schließen von Oracle

>1 Starten Sie die Datenbank Geben Sie im cmd-...

Vue implementiert Funktionen zum Hoch- und Herunterladen von Dateien

In diesem Artikelbeispiel wird der spezifische Co...

Eine vorläufige Studie zum Vue-Unit-Testing

Inhaltsverzeichnis Vorwort Warum Unit-Tests einfü...

Tipps zum Mischen von OR und AND in SQL-Anweisungen

Heute gibt es eine solche Anforderung. Wenn die a...

Detaillierte Schritte zur Installation von MySQL 5.7 über YUM auf CentOS7

1. Gehen Sie zu dem Speicherort, an dem Sie das I...