Heim > Datenbank > MySQL-Tutorial > Fassen Sie die fünf Methoden zur Altersberechnung in MySQL und ihre jeweiligen Vor- und Nachteile zusammen

Fassen Sie die fünf Methoden zur Altersberechnung in MySQL und ihre jeweiligen Vor- und Nachteile zusammen

零下一度
Freigeben: 2017-05-05 16:39:41
Original
1759 Leute haben es durchsucht

Ich habe MySQL vorher nicht oft verwendet und war mit den MySQL-Funktionen nicht sehr vertraut. Als ich auf dieses Problem stieß, habe ich sofort nach Baidu gesucht und diese beiden Methoden in Baidus Blogs an erster Stelle gefunden.

Methode 1

SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birthday)), '%Y')+0 AS age
Nach dem Login kopieren

Methode 1, der Autor wies auch auf den Fehler hin, das heißt, wenn das Datum ein zukünftiges Datum ist, ist das Ergebnis 0 und keine negative Zahl 5; Hier werden Funktionen und zwei Operatoren verwendet.

Methode 2

SELECT DATE_FORMAT(NOW(), &#39;%Y&#39;) - DATE_FORMAT(birthday, &#39;%Y&#39;) - (DATE_FORMAT(NOW(), &#39;00-%m-%d&#39;) < DATE_FORMAT(birthday, &#39;00-%m-%d&#39;)) AS age
Nach dem Login kopieren

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

Nachdem ich diesen Beitrag gelesen hatte, war ich fassungslos. Wie konnte es vorher so kompliziert sein? Ich bin fest davon überzeugt, dass es einen einfachen und effizienten Weg geben muss. Es wurde schnell eine verbesserte Methode basierend auf der oben genannten Methode gefunden.

Verbesserte Methode eins und Methode zwei

SELECT year( from_days( datediff( now( ), birthdate)));
SELECT YEAR(CURDATE())-YEAR(birthday)-(RIGHT(CURDATE(),5)<RIGHT(birthday,5));
Nach dem Login kopieren

Verbesserte Methode eins, eine Funktion weniger und ein Operator fehlt. Wenn das Datum ein zukünftiges Datum ist, ist das Berechnungsergebnis immer noch 0;
Die verbesserte Methode 2 hat immer noch 6 Funktionen und 3 Operatoren, was einfacher aussieht, wenn das Datumsformat „2013-01-01“ ist, ist das Ergebnis „01-01“; , gibt es kein Problem; wenn das Datumsformat das abgekürzte Format „2013-1-1“ ist, werden die fünf Ziffern auf der rechten Seite als „3-1-1“ herausgenommen, was zu einem Fehler führt.

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

Methode 3

SELECT FLOOR(DATEDIFF(CURDATE(), @birthday)/365.2422)
Nach dem Login kopieren

Dividieren Sie den Geburtstag und die Anzahl der Tage davor das aktuelle Datum Nehmen Sie die tatsächliche Anzahl der Tage in einem Jahr (365 Tage, 5 Stunden, 48 Minuten und 46 Sekunden) und runden Sie dann auf die nächste ganze Zahl. Dabei werden nur drei Funktionen und ein Operator verwendet.

Dann habe ich auf ausländischen Websites schnell die vierte Methode gefunden:

Methode 4

 SELECT  TIMESTAMPDIFF(YEAR, @birthday, CURDATE())
Nach dem Login kopieren

Diese Methode nutzt nur zwei Funktionen. Wahrscheinlich die beste.

Ich habe die oben genannten vier Methoden getestet. Wenn das aktuelle Datum „2017-1-13“ und der Geburtstag „2013-1-14“ ist, liegt der Geburtstag einen Tag entfernt, also 4 Jahre alt. Es ist nur noch ein Tag entfernt und das Ergebnis ist immer noch drei Jahre alt, was sich nicht sehr vernünftig anfühlt. Ändern Sie Methode drei und runden Sie ab, um Methode fünf zu erhalten:

Methode fünf

SELECT ROUND(DATEDIFF(CURDATE(), @birthday)/365.2422)
Nach dem Login kopieren

Das auf diese Weise berechnete Alter ist dem tatsächlichen Alter bei weitem am nächsten, aber Methode 4 stimmt möglicherweise am besten mit der Definition des Alters überein.

[Verwandte Empfehlungen]

1. Kostenloses MySQL-Online-Video-Tutorial

2. Neuestes MySQL-Handbuch-Tutorial

3. Boolean Education Yan Shiba MySQL-Einführungsvideo-Tutorial

Das obige ist der detaillierte Inhalt vonFassen Sie die fünf Methoden zur Altersberechnung in MySQL und ihre jeweiligen Vor- und Nachteile zusammen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage