質問
私は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()) AS
ageFROM 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;
所属していません StackOverflow