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 计算工作日数的主要内容,如果未能解决你的问题,请参考以下文章