我正在尝试计算出生日期的年龄,我可以使用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'
答案 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