Datumsdifferenz in MySQL zu berechnen Alter
Frage
Ich habe ein Problem in Bezug auf die datediff
MYSQL-Funktion, kann ich es verwenden und es ist einfach. Aber ich verstehe nicht, wie man es benutzt das Tabellenfeld zu sammeln Unterschiede innerhalb. Z.
Ich habe eine Spalte dob
und ich möchte eine Abfrage schreiben, die wie etwas tun
select dateDiff(current_timeStamp,dob)
from sometable 'here dob is the table column
Ich meine ich den Unterschied zwischen der aktuellen Datum Zeit auf das Tabellenfeld dob
will, jedes Abfrage-Ergebnis ist der Unterschied, das Alter des Benutzers.
Lösung
Sie mögen das bedeuten?
SELECT DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), dob)), "%Y")+0 AS age from sometable
( Quelle )
Andere Tipps
Sie können dies tun
SELECT TIMESTAMPDIFF(YEAR, date_of_birth, NOW()) AS
ageFROM your_table
Works jedes Mal.
Wenn Sie möchten, für jeden Benutzer, das Alter in Jahren zeigen, tun
select name,extract(year from (from_days(dateDiff(current_timestamp,dob))))
from sometable;
Wenn ich Ihre Kommentare zu den vorherigen Antworten zu verstehen, die Datum-of-Geburt Spalte ist nicht wirklich ein DATE
Wert, sondern ein String im Format m / d / y. I stark empfehlen Sie dies ändern; es verlangsamt alle Datum Berechnungen was Sie tun wollen, und Sie riskieren ungültige Datumswerte in die Spalte eingetragen zu werden.
Ich denke, das ist das, was Sie brauchen. Es nutzt die STR_TO_DATE()
Funktion und einen Algorithmus zur Berechnung des Alters aus der MySQL-Dokumentation:
SELECT YEAR(CURDATE()) - YEAR(STR_TO_DATE(dob, '%m/%d/%Y'))
- (RIGHT(CURDATE(), 5) < RIGHT(STR_TO_DATE(dob, '%m/%d/%Y'), 5)) AS age
FROM sometable;
ich denke, das sollte helfen
SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(now()) - TO_DAYS(@dateofbirth)), '%Y') + 0;
Hinweis: Geben Sie den D.O.B im richtigen Format, zum Beispiel YYYY-MM-DD'=> '1991-11-11
Versuchen Sie diese
SELECT DATEDIFF(CURDATE(), '2014-02-14');
select truncate(datediff(curdate(),dob)/365.25,0) from table;