8

MYSQL関数に問題があり、datediff使用できて簡単です。しかし、それを使用してテーブルフィールド内の差異を収集する方法がわかりません。例えば

私は列を持っていて、dob次のようなことをするクエリを書きたいです

select dateDiff(current_timeStamp,dob) 
from sometable 'here dob is the table column

つまり、現在の日時とテーブルフィールドdobの差が必要です。各クエリ結果は差、ユーザーの年齢です。

4

7 に答える 7

21

こんな感じですか?

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

ソース

于 2009-09-05T15:17:22.877 に答える
11

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

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

いつでも動作します。

于 2014-03-11T06:57:01.403 に答える
1

必要に応じて、ユーザーごとに年齢を年で表示します。

select name,extract(year from (from_days(dateDiff(current_timestamp,dob)))) 
       from sometable;
于 2009-09-05T15:21:09.860 に答える
1

以前の回答に対するあなたのコメントを理解していれば、生年月日列は実際には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;
于 2009-09-05T21:06:45.167 に答える
0
select truncate(datediff(curdate(),dob)/365.25,0) from table;
于 2016-05-17T14:15:20.723 に答える
0

これを試して

SELECT DATEDIFF(CURDATE(), '2014-02-14');
于 2015-08-15T11:12:31.180 に答える
0

私はこれが助けるべきだと思う

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

注: DOB を正しい形式で指定します。YYYY-MM-DD'=> '1991-11-11

于 2013-09-02T14:02:00.770 に答える