【发布时间】:2013-12-23 20:07:10
【问题描述】:
我正在尝试根据出生日期计算年龄,我可以使用this thread 成功完成此操作。但是,我的一些 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'
【问题讨论】:
-
日期存储为 DATE 数据类型,对吧?
-
DateOfBirth 存储为日期时间
-
NULL 不存储在字段中。 NULL 是记录中其他地方的隐藏状态位。这就是为什么必须使用特殊机制来测试字段是否为 NULL:
DateOfBirth IS NOT NULL或DateOfBirth IS NULL。