【问题标题】:Access datediff using calculated first day of the year使用计算的一年中的第一天访问 datediff
【发布时间】:2014-07-05 03:43:32
【问题描述】:
我正在 Access 2010 中创建一个新表单。我需要创建一个字段,该字段将使用一年中第一天的计算值计算年初至今的时间范围(以月为单位)。场景是用户将输入日期。然后,Access 将根据用户键的日期计算 YTD 月份的值。问题是用户可以输入当前年份的日期或前一年的日期。所以,我不能简单地硬编码一个基线日期,比如 2014 年 1 月 1 日,来执行计算。我需要 Access 根据输入的日期生成一年中的第一天,然后执行计算。
示例:用户输入“2013 年 4 月 10 日”
Access 计算从“2013 年 1 月 1 日”到“2013 年 4 月 10 日”的 YTD 月份。
预期结果:3.25 个月
我需要这个来帮助计算收入,这将使用多年的日期。
【问题讨论】:
标签:
date
ms-access
vba
ms-access-2010
【解决方案1】:
我很快为你创建了这个函数:
Public Function calcmonths(datecalc As Date) As Double
calcmonths = Round(DateDiff("d", DateSerial(Year(datecalc), 1, 1), datecalc) * 12 / DateDiff("d", DateSerial(Year(datecalc), 1, 1), DateSerial(Year(datecalc) + 1, 1, 1)), 2)
End Function
您可以将它与表单中的输入一起使用。它使用 DateSerial(Year(datecalc), 1, 1) 计算输入年份的第一天,然后计算天数差。该结果乘以 12(月)并除以当年的天数(计算以确保闰年为 366 天)。最后将结果四舍五入为 2 位小数。