簡體   English   中英

從出生日期開始的MySQL年齡(忽略null)

[英]MySQL Age from Date of Birth (ignore nulls)

我正在嘗試從出生日期計算年齡,我可以使用此線程成功完成此操作 但是,我的某些DateOfBirth具有空值,並使用下面的公式,結果返回為“ 2012”而不是(空白/空)。

這是我的桌子:

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'

嘗試這個:

SELECT  CASE
            WHEN user.DateOfBirth IS NULL THEN ""
            ELSE year(curdate())-year(user.DateOfBirth) - (dayofyear(curdate()) < dayofyear(user.DateOfBirth)) 
        END AS 'Age'
FROM    myTable
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
SELECT IF(user.DateOfBirth IS NULL,"",
          YEAR(CURDATE()) - YEAR(user.DateOfBirth)
          - IF(DAYOFYEAR(CURDATE()) < DAYOFYEAR(user.DateOfBirth),1,0)
         ) as 'Age'
FROM user

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM