gpt4 book ai didi

database - 在 Microsoft Access (2010) 中计算年龄(以年和月为单位)

转载 作者:搜寻专家 更新时间:2023-10-30 21:50:16 24 4
gpt4 key购买 nike

我有两个字段(体检日期和出生日期)。我计算了年龄((体检日期-出生日期)/365.25)。我想要做的是在单独的字段中计算年和月的年龄。我不确定是否可以使用代码生成器或某种方式完成。

最佳答案

虽然 DateDiff() 函数似乎是计算年龄的合理选择,但遗憾的是它不计算两个日期之间经过的年或月数.例如,假设婴儿出生于 2014 年 12 月 31 日,正好在 48 小时后,即 2015 年 1 月 2 日进行检查。即

DateOfBirth = DateSerial(2014, 12, 31)
DateOfExam = DateSerial(2015, 1, 2)

如果我们简单地使用 DateDiff() 来计算她在考试时的“年龄”(以年和月为单位),我们将得到

?DateDiff("yyyy", DateOfBirth, DateOfExam)
1
?DateDiff("m", DateOfBirth, DateOfExam)
1

因此,我们会报告婴儿 1 岁 1 个月大,而实际上她只有 2 大。

适当的年龄计算需要比这更复杂。下面的 VBA 函数将计算以年和月为单位的“年龄”,返回类似“2 年零 1 个月”的字符串:

Public Function AgeInYearsAndMonths(StartDate As Variant, EndDate As Variant) As Variant
Dim Date1 As Date, Date2 As Date
Dim mm1 As Integer, dd1 As Integer, mm2 As Integer, dd2 As Integer
Dim ageYears As Integer, ageMonths As Integer, rtn As Variant
rtn = Null
If Not (IsNull(StartDate) Or IsNull(EndDate)) Then
If StartDate <= EndDate Then
Date1 = StartDate
Date2 = EndDate
Else
Date1 = EndDate
Date2 = StartDate
End If
mm1 = Month(Date1)
dd1 = Day(Date1)
mm2 = Month(Date2)
dd2 = Day(Date2)
ageYears = DateDiff("yyyy", Date1, Date2)
If (mm1 > mm2) Or (mm1 = mm2 And dd1 > dd2) Then
ageYears = ageYears - 1
End If
ageMonths = DateDiff("m", Date1, Date2) Mod 12
If dd1 > dd2 Then
If ageMonths = 0 Then
ageMonths = 12
End If
ageMonths = ageMonths - 1
End If
If ageYears = 0 And ageMonths = 0 Then
rtn = "less than 1 month"
Else
rtn = ageYears & " year" & IIf(ageYears = 1, "", "s") & " and " & ageMonths & " month" & IIf(ageMonths = 1, "", "s")
End If
End If
AgeInYearsAndMonths = rtn
End Function

关于database - 在 Microsoft Access (2010) 中计算年龄(以年和月为单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29124980/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com