首页 > 解决方案 > DateDiff 错误地计算年龄

问题描述

在 Microsoft Access 中,我在表单上的文本框中使用 DateDiff 公式来计算一个人的年龄。用户输入出生日期,另一个名为“年龄”的文本框根据出生日期和今天的日期计算并显示年龄。但由于某种原因,年龄不正确。这是我用来确定年龄的公式。

=DateDiff("yyyy",[txtDoB1],Date())    'today is 2/12/2021
=DateDiff("yyyy", #5/24/1979#, #2/12/2021#)     'this has the dates manually typed in

DateDiff 公式返回 42 作为年龄。这是不正确的。应该是 41. 为什么 DateDiff 公式会导致年龄不正确?我究竟做错了什么?

出现问题的 Access 表单的屏幕截图

标签: ms-access

解决方案


DateDiff 公式不能很好地计算年份之间的差异。如果您"yyyy"在 DateDiff 公式中使用,则它仅使用公式中提供的 2 个日期的年份部分来计算年份差。这会导致不希望的结果。在您的示例中,DateDiff 公式2021将从 2021 年 2 月 12 日开始,并从 1979 年 5 月 24 日减去1979。或者换句话说,2021 - 1979 = 42

而是尝试使用以下公式。

=Int((Date()-[txtDoB1])/365.25)      '365.25 compensates for leap years
=Int((#2/11/2021#-#5/24/1979#)/365.25)

推荐阅读