sql - 从日期计算中排除周末和自定义日期(即假期)

标签 sql sql-server sql-server-2005 tsql

目前,我正在根据开始日期 (DateTime) 和持续时间(天数)计算完成日期,但我的计算没有考虑周末或假期。

所以,我的解决方案是不正确的。这只是一个起点。

我在那里阅读了一些文章,其中一种方法是创建一个巨大的日历表,其中包含 future 50 年的所有周末和节假日。我想这个想法是根据日历表查询日期范围并减去周末和/或假期的数量。

问题是我正在使用的软件允许用户设置他们自己的项目日历。 考虑到该软件允许用户管理多个项目,表格不会变得太大而难以维护吗?

那么,我想我的问题是如何开始以及有哪些可能的方法来解决这个问题?

基本上,对于每个项目任务,我需要在给定开始日期和持续时间的情况下计算任务完成日期,但要考虑周末和自定义日期(又名假期)。

有什么想法吗?

顺便说一句:我正在使用 SQL Server 2005。

最佳答案

I read some articles out there and one approach is to create a gigantic calendar table that has all the weekends and holidays for the next 50 years. I guess the idea is to query a date range against the calendar table and subtract the # of weekends and/or holidays.

这是因为有些假期并不总是在同一天。例如劳动节 - 九月的第一个星期一。与尝试编写规则来计算它相比,以每年为基础存储它所在的日期更容易并且在数据库中占用更少的空间。

其他考虑因素是星期六/星期日的假期 - 如果休息日是星期一或星期五,这是一个折腾。一些假期是联邦的,而另一些是本地的......

关于sql - 从日期计算中排除周末和自定义日期(即假期),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1604629/

相关文章:

带有行号的 SQL Unpivot

sql-server - SQL 中 VARCHAR 的 String.IsNullOrEmpty 类似函数?

mysql - 如何将 mysql 查询转换为 microsoft sql 查询

sql - 将excel文件保存在sql server中的数据类型?

sql-server-2005 - 从函数返回 varchar(MAX) 返回截断的字符串

c# - 关键字 'Transaction' 附近的语法不正确

sql - 如何将 SQL Server 2016 GETDATE() 函数输出转换为 MMM dd, yyyy?

php - 链接sql中的两个表以获取动态数据

sql-server - 遍历所有表,然后遍历所有列数据类型

sql - 通过递归计算接力赛时间(在动态 SQL 中)