Access 2010计算工作日数

时间:2014-12-01 22:25:01

标签: ms-access-2010

我是Access 2010的新用户,需要在工作周内获取不包括假期的天数。我已经能够在互联网上出现的工作日使用标准的VB代码,它适用于简单的周一 - 周五或周一 - 周六计算。我的问题是,如果星期五,星期六和星期日都计算为1天,我怎么能或可以操纵这段代码来计算天数呢?

示例:计算从2014年11月25日星期二到今天的天数。

  1. - 今天的日期= 2014年12月1日星期一;
    -Monday,2014年12月1日= 0;
    -Sunday,2014年11月30日= 3;
    - 2014年11月29日星期六= 3;
    - 2014年11月28日,星期五= 3;
    - 2014年11月27日星期四(假日)= 2;
    - 2014年11月26日星期三= 2;
    - 2014年11月25日星期二= 1
  2. 所以在上面的例子中,天数是3。

1 个答案:

答案 0 :(得分:0)

如果您需要考虑法定假日,您真的需要使用某种表格。对问题的纯粹算法方法很难管理并且容易出现故障,主要是因为

  1. 某个固定日期的假期可能会在某个其他日期观察。例如,如果圣诞节是在星期六,那么员工可能会在星期五休息一天。
  2. 有些假日日期难以计算。特别是,Good Friday被定义为(至少在加拿大)“春分之后第一个满月之后的第一个星期日之前的星期五”。
  3. 最简单的形式是[DatesTable]看起来像这样:

    theDate     dayOff  comment         
    ----------  ------  ----------------
    2014-11-21  False                   
    2014-11-22  True    Saturday        
    2014-11-23  True    Sunday          
    2014-11-24  False                   
    2014-11-25  False                   
    2014-11-26  False                   
    2014-11-27  True    Thanksgiving Day
    2014-11-28  False                   
    2014-11-29  True    Saturday        
    2014-11-30  True    Sunday          
    2014-12-01  False                   
    2014-12-02  False                   
    

    计算2014-11-25和2014-11-30(含)之间的工作天数,只需

    SELECT COUNT(*) AS WorkDays 
    FROM DatesTable 
    WHERE theDate Between #2014-11-25# And #2014-11-30#
        AND dayOff=False;
    
相关问题