3

私はこのSQLを実行しています:

SELECT TIMESTAMPDIFF(YEAR,CONCAT(dob_year, '-', dob_month, '-', dob_day),CURDATE()) を age FROM メンバーとして

データベースのタイムスタンプからユーザーの年齢を計算します。

私は3つの列を持っています(dob_year / dob_month / dob_day)

上記のクエリは年齢を年で計算しますが、年と月でそれが必要です。年齢は10歳ではなく、10歳2ヶ月ということになります。

4

2 に答える 2

3
    SELECT 
       TIMESTAMPDIFF(YEAR,CONCAT(dob_year, '-', dob_month, '-', dob_day),CURDATE()) 
      as 
        years, 
        (TIMESTAMPDIFF(MONTH,CONCAT(dob_year, '-', dob_month, '-', dob_day),CURDATE()) - 
        TIMESTAMPDIFF(YEAR,CONCAT(dob_year, '-', dob_month, '-', dob_day),CURDATE())*12) 
      as 
        months 
      FROM 
        members
于 2013-09-30T09:27:30.053 に答える
0

これはあなたに2列を与えて動作するはずです

1. years
2. months


SELECT 
TIMESTAMPDIFF(YEAR,CONCAT(dob_year, '-', dob_month, '-', dob_day),CURDATE()) 
as years,
TIMESTAMPDIFF(MONTH, 
    TIMESTAMPADD(YEAR,
        TIMESTAMPDIFF(YEAR,CONCAT(dob_year, '-', dob_month, '-', dob_day),CURDATE())
    ,CONCAT(dob_year, '-', dob_month, '-', dob_day)),CURDATE()) 
as 
   months 
FROM 
   members

参照

于 2013-09-30T09:05:29.713 に答える