从出生日期开始的MySQL年龄(忽略空值)

时间:2013-12-23 20:07:10

标签: mysql sql

我正在尝试计算出生日期的年龄,我可以使用this thread成功完成。但是,我的一些DateOfBirth具有空值,并使用我的下面的公式,结果返回为“2012”而不是(空白/ null)。

这是我的表格:

10/06/1990
01/09/1998
*null*
*null*
02/16/1991

这是我想要的结果:

23
25
(blank)
(blank)
22

到目前为止,这是我的公式:

year(curdate())-year(user.DateOfBirth) - (dayofyear(curdate()) < dayofyear(user.DateOfBirth)) AS 'Age'

以下是我实际得到的内容:

23
25
2012
2012
22

以下是我试图消除“2012”的一些事情,这会产生一些加密文字:

IF(user.DateOfBirth > '0001-01-01',AboveFormula,'')
CASE AboveFormula WHEN 2012 THEN '' ELSE AboveFormula END AS 'Age'

3 个答案:

答案 0 :(得分:4)

试试这个:

SELECT  CASE
            WHEN user.DateOfBirth IS NULL THEN ""
            ELSE year(curdate())-year(user.DateOfBirth) - (dayofyear(curdate()) < dayofyear(user.DateOfBirth)) 
        END AS 'Age'
FROM    myTable

答案 1 :(得分:2)

SELECT 
CASE
WHEN DateOfBirth IS NULL THEN ""
ELSE 
DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(DateOfBirth , '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(DateOfBirth , '00-%m-%d')) 
END AS age
FROM    myTable

答案 2 :(得分:1)

SELECT IF(user.DateOfBirth IS NULL,"",
          YEAR(CURDATE()) - YEAR(user.DateOfBirth)
          - IF(DAYOFYEAR(CURDATE()) < DAYOFYEAR(user.DateOfBirth),1,0)
         ) as 'Age'
FROM user