3

我正在运行这个 SQL:

从成员中选择 TIMESTAMPDIFF(YEAR,CONCAT(dob_year, '-', dob_month, '-', dob_day),CURDATE()) 作为年龄

从数据库中的时间戳计算用户年龄。

我有 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 回答