关于通过出生日期计算年龄的问题,通过baidu搜索得到很多网站贴了以下函数:
Function CalcAge(datEmpDateOfBirth as Variant) as Integer
CalcAge = Int(DateDiff("y",datEmpDateOfBirth,Date())/365.25)
End Function
但事实上以上方法法不准确
如2000-1-1 和2001-1-1比较得结果为1,但2001-1-1 和2002-1-1比较得结果为0
正确方法应为(VB):
DateDiff(DateInterval.Year, dtrInfo("出生日期"), Date.Now) - 1 + Int(Format(Date.Now, "MMdd") >= Format(DateTime.Parse(dtrInfo("出生日期")), "MMdd"))
注:
MSDN记载:DateDiff(Interval, Date1 , Date2)函数中若 Interval 被设置为 DateInterval.Year,则返回值只从 Date1 和 Date2 的年份部分算起。
如果直接在数据库中计算,可参考以下语句
DECLARE @BIRTHDAY DATETIME
SET @BIRTHDAY = '19800615'
SELECT DATEDIFF(yy, @BIRTHDAY, GETDATE()) -
CASE
WHEN MONTH(@BIRTHDAY) > MONTH(GETDATE()) THEN 1
WHEN MONTH(@BIRTHDAY) = MONTH(GETDATE()) AND DAY(@BIRTHDAY) > DAY(GETDATE()) THEN 1
ELSE 0
END