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. 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:
|
<<: Detaillierte Erklärung der jQuery-Kettenaufrufe
Zusammenfassen 1. Ähnlichkeiten Beide können den ...
Tatsächlich gibt es viele entsprechende Schreibme...
Hintergrund Ein Kollege arbeitet an seinem Sicher...
Pixel Auflösung Mit der Monitorauflösung ist eige...
0. Vorbereitung: • Schließen Sie iTunes • Beenden...
Wenn viele Daten angezeigt werden müssen, ist die...
Kürzlich habe ich im Internet den Artikel „Build ...
Mysql-Abfragezeitraum-Schnittmenge Anwendungsszen...
Inhaltsverzeichnis Einführung Traditionelle Überg...
[LeetCode] 185. Die drei höchsten Gehälter der Ab...
Inhaltsverzeichnis 1. Erstellen Sie die Vue-Umgeb...
nohup-Befehl Bei der Verwendung von Unix/Linux mö...
Vorwort Nach der Installation von MySQL und Navic...
Viele Menschen leben heute im Internet und die Suc...
Inhaltsverzeichnis Offizielle Einführung in Node....