计算几个月和几年的年龄或将秒数格式化为年和月?

时间:2011-06-23 17:34:21

标签: mysql

我需要在某个时间点找出一个人的年龄。我把DOB和这个'时间点'都作为unix时间戳。

我可以减去它们以便在几秒钟内获得它们的年龄,但是......我没有看到任何MySQL functions将其格式化为数年和数月。

我该怎么做?

具体来说,我想要的格式是5y 6m

2 个答案:

答案 0 :(得分:3)

SELECT CONCAT(    
  YEAR(DATE_ADD('2000-01-01',INTERVAL (DATEDIFF(FROM_UNIXTIME(tpit), FROM_UNIXTIME(dob))) DAY))-2000, 'y ',
  MONTH(DATE_ADD('2000-01-01',INTERVAL (DATEDIFF(FROM_UNIXTIME(tpit), FROM_UNIXTIME(dob))) DAY)), 'm'
  ) as output 
FROM ..... WHERE .....

答案 1 :(得分:2)

这是您的查询:

SELECT CONCAT(
    TIMESTAMPDIFF(YEAR, FROM_UNIXTIME(`dob`), FROM_UNIXTIME(`point_in_time`)), 
    'y ',
    MOD(TIMESTAMPDIFF(MONTH, FROM_UNIXTIME(`dob`), FROM_UNIXTIME(`point_in_time`)), 12),
    'm'
) `age`
...
...

另一个可能是:

SELECT CONCAT(
    FLOOR((`point_in_time` - `dob`) / 31536000),
    'y ',
    FLOOR(MOD((`point_in_time` - `dob`) / 31536000 * 12, 12)),
    'm'
) `age`
...
...

希望这有帮助吗?