質問

私はdatediffのMYSQL機能に関する問題を抱えている、私はそれを使用することができますし、それは簡単です。しかし、私は、テーブルのフィールド内の差異を収集するためにそれを使用する方法を理解していません。例えばます。

私は、列dobを持っていると私は次のように行いますクエリを書きたい。

select dateDiff(current_timeStamp,dob) 
from sometable 'here dob is the table column
私は、テーブルのフィールドdobに現在の日付時刻からの差をつけたいわけ、各クエリの結果は違い、ユーザの年齢である。

役に立ちましたか?

解決

あなたはこのように意味ですか?

SELECT DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), dob)), "%Y")+0 AS age from sometable

ソース)

他のヒント

あなたはこれを行うことができます。

SELECT TIMESTAMPDIFF(YEAR, date_of_birth, NOW()) ASageFROM your_table

作品毎回ます。

あなたがしたい場合は、ユーザーごとに、年間で年齢を表示し、DO

select name,extract(year from (from_days(dateDiff(current_timestamp,dob)))) 
       from sometable;
私は以前の回答にコメントを理解していれば、

は、生年月日欄には、実際にDATE値が、形式M / D / yの文字列ではありません。私の強くのあなたはこれを変更するお勧めします。それはあなたがしたいとあなたが列に入力取得無効な日付値を危険にさらす任意の日付の計算が遅くなります。

私は、これは何が必要だと思います。それはSTR_TO_DATE()機能とMySQLのドキュメントから年齢を計算するためのアルゴリズムを使用します:

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;

私はこれが助けるべきだと思います。

SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(now()) - TO_DAYS(@dateofbirth)), '%Y') + 0;

注:例えば、正しい形式でD.O.Bを与えますYYYY-MM-DD'=> '1991-11-11

これを試してみてください
SELECT DATEDIFF(CURDATE(), '2014-02-14');
select truncate(datediff(curdate(),dob)/365.25,0) from table;
scroll top