Access 2010 计算工作日数

Posted

技术标签:

【中文标题】Access 2010 计算工作日数【英文标题】:Access 2010 calculating the number of workdays 【发布时间】:2014-12-01 22:25:01 【问题描述】:

我是 Access 2010 的新手,需要获取一个工作周中的天数,不包括假期,但是有一个转折。我已经能够使用互联网上出现的工作日标准 VB 代码,它非常适用于简单的周一 - 周五或周一 - 周六计算。我的问题是,如果周五、周六和周日都算作 1 天,我该如何或是否可以操纵此代码来计算天数?

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

    -今天的日期 = 2014 年 12 月 1 日,星期一; - 2014 年 12 月 1 日,星期一 = 0; - 2014 年 11 月 30 日,星期日 = 3; -2014 年 11 月 29 日,星期六 = 3; -2014 年 11 月 28 日,星期五 = 3; -2014 年 11 月 27 日星期四(节假日)= 2; -2014 年 11 月 26 日,星期三 = 2; - 2014 年 11 月 25 日,星期二 = 1

所以在上面的例子中,天数是 3。

【问题讨论】:

你考虑过日历表吗?它们非常有用。 由于您没有共享您正在使用的代码,因此很难得到准确的答案。在您的搜索中,您可能会遇到可以告诉您某个日期范围内有多少个“星期五”的代码。为什么不将工作日计算为周一至周日减去周五(或周六/周日)的数量。 【参考方案1】:

如果您需要考虑法定假日,您确实需要使用某种表格。纯算法解决问题的方法难以管理并且容易失败,主要是因为

    固定日期的假期可能会在其他日期遵守。例如,如果圣诞节是在星期六,那么员工可能会在星期五休息一天。 有些假期日期难以计算。特别是,Good Friday 被定义为(至少在加拿大)“春分后第一个满月之后的第一个星期日之前的星期五”。

在其最简单的形式中,[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;

【讨论】:

以上是关于Access 2010 计算工作日数的主要内容,如果未能解决你的问题,请参考以下文章

在Python中动态计算不包括假期日历的工作日数

如何计算确定日期的工作日数?

如何使用 Moment JS 计算范围之间的给定工作日数?

SQL语句计算两个日期之间有多少个工作日的方法

Excel 两个日期之间间隔的工作日数,非头尾,大家帮我看看我这样做,结果不对呀?问题出在哪了?不甚感激!

数据框中每日数据与工作日和周末平均值的偏差