我是新来的Access 2010,并需要获得与扭曲节假日除外然而一个工作周的天数。 我已经能够使用针对工作日的标准VB代码,在互联网上出现,它简单周一的伟大工程 - 周五或周一 - 周六计算。 我的问题是,我还是可以如何操纵这个代码来计算天数,如果周五,周六和周日都算1天?
例如:周二14年11月25日计算的天数到今天。
- - 今天的日期=周一,2014年12月1日;
-Monday,2014年12月1日= 0;
- 星期日,二零一四年十一月三十日= 3;
-Saturday,2014年11月29日= 3;
至周五,2014年11月28日= 3;
-Thursday,2014年11月27日(节日)= 2;
-Wednesday,2014年11月26日= 2;
-Tuesday,2014年11月25日= 1
所以在上面的例子中,天数是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
计数的工作日情节中字和情节中字(含)之间的数字,简直是
SELECT COUNT(*) AS WorkDays
FROM DatesTable
WHERE theDate Between #2014-11-25# And #2014-11-30#
AND dayOff=False;