【问题标题】: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 位小数。

    【讨论】:

      猜你喜欢
      • 2023-03-10
      • 2016-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-07
      • 1970-01-01
      相关资源
      最近更新 更多