访问 SQL 减去日期,不包括周末

Posted

技术标签:

【中文标题】访问 SQL 减去日期,不包括周末【英文标题】:Access SQL Subtract Dates excluding weekends 【发布时间】:2012-04-25 13:55:44 【问题描述】:

我能够运行查询并从创建之日起更新天数。但是我想排除周末,只是周一到周五。

例子:

UPDATE [Table1] SET [Table1].Days = DATE() - [Table1].DateCreated WHERE [Table1].Password = True AND [Table1].Complete = FALSE;

这会将天数更新为从创建日期到当前日期的值,即 1、2、3 等。但是我需要它来排除周末。我不经常运行查询,但我想创建这个查询。

请帮忙,谢谢。

【问题讨论】:

那么,每 7 天只有 5 天? 是的,周一到周五。我只需要营业日。我不在乎假期,只在乎周末。 【参考方案1】:

如果您将从 Access 会话中运行查询,则可以使用 VBA 用户定义函数来计算两个日期之间的工作日数。

例如,考虑 Access Web 中的 WorkingDays() 函数:Calculate Number of Working Days。如果我正确理解您的查询,我认为这可能会满足您的要求:

UPDATE [Table1]
SET [Table1].Days = WorkingDays([Table1].DateCreated, DATE())
WHERE [Table1].Password = True AND [Table1].Complete = FALSE;

在同一页面上,您可以找到一个 WorkingDays2() 函数,如果有用,您可以将假期排除在工作日计数之外。不过,您需要为假期准备一张桌子。

如果您将在 Access 会话之外执行此操作,例如从经典 ASP 或 Dot.Net,您将无法在查询中使用用户定义的函数。

【讨论】:

以上是关于访问 SQL 减去日期,不包括周末的主要内容,如果未能解决你的问题,请参考以下文章

获取两个日期之间的天数,不包括周末

计算连续日期,不包括 SQL 中的周末

从日期中添加或减去天数时如何避免周末或节假日[重复]

选择日期+3天,不包括周末和节假日

DateDiff Sql 查询不包括周末作为变量使用变量创建 > X

从日期中减去天数,然后将结果舍入到 Redshift 中的周末日期