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.

War es hilfreich?

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()) ASageFROM 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;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top