【问题标题】:date calculation with full date in separate columns在单独的列中使用完整日期进行日期计算
【发布时间】:2016-02-19 04:54:07
【问题描述】:

我正在尝试查询一个项目的最近 3 个月,其中我的月份和年份位于单独的列中,如下所示:

YEAR_     PERIOD
2014         5
2013         6
2013          11
2011         6
2009         2

查询需要始终从当前月份和年份开始。我试过使用 DateAdd()、DateSerial() 和 DateDiff(),这些都不起作用。每当我尝试使用 month(now()-3) 时,我都会得到 2 而不是 11。

【问题讨论】:

    标签: ms-access


    【解决方案1】:

    添加或减去整数和日期只是从日期中添加或减去天数。所以Now() - 3 的结果是 2016-02-15(发帖时是 2016-02-18)。那显然仍然是二月 - 因此你的结果是两个。

    试试看Month(DateAdd("m", -3, Now))。在这里,我们将 -3 月份添加到当前日期,然后获取结果月份。基于今天的日期,结果为 11。

    【讨论】:

      【解决方案2】:

      我想通了。

      DateDiff("m",CDate(Format([PERIOD] & "/" & [YEAR_],"mm/yyyy")),Now()) 
      

      这会将两个字段设为一个日期。然后,我从本月和两个日期之间的月份中获取差异。然后我将条件设置为

      附录

      可以简化为:

      DateDiff("m",CDate([PERIOD] & "/" & [YEAR_]),Date()) 
      

      然而,一般来说,如果可以避免的话,你永远不应该对日期使用字符串处理,而且它很容易做到:

      DateDiff("m",DateSerial([YEAR_],[PERIOD],1)),Date()) 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-05
        • 2020-03-27
        • 1970-01-01
        • 2021-08-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多