首页 > 解决方案 > 基于日历表的以秒为单位的营业时间功能

问题描述

我对这个论坛和 T-SQL 相当陌生。

我正在寻找一个函数来根据我的日历表以秒为单位计算营业时间。在我的日历表中,我有 2 列。第一列是日期和开放时间,第二列是日期和结束时间。

我尝试了@Ezlo SQL Server 的解决方案,计算日期之间的小时数,不包括周五下午 6 点到周一早上 6 点 。在他的解决方案中,当日期相同时,它会加倍时间,例如输出必须是 75 秒,然后是 150 秒。我希望能够在像 WorkTime (@StartDate DATETIME, @FinishDate DATETIME) 这样的查询中调用该函数,同时它通过我的日历表。startdate 和finishdate 必须是我作为值放入其中的任何内容,即带有日期的列(datecreated,dateclosed)。

即:像这种格式的 1000 行查询。

方案 1

TicketID:    111111
DateCreated: 2019-01-01 10:00:52
DateClosed:  2019-01-02 08:35:00

检查我的日历表时,函数结果必须为 300 秒。

方案 2

TicketID:    111112
DateCreated: 2019-01-02 16:30:00
DateClosed:  2019-01-02 16:15:00

检查我的日历表时,函数结果必须为 900 秒。

方案 3

TicketID:    111113
DateCreated: 2019-01-02 20:00:00
DateClosed:  2019-01-03 09:30:00

函数结果:3600 秒

方案 4

TicketID:    111114
DateCreated: 2019-01-05 20:00:00
DateClosed:  2019-01-07 09:00:00

函数结果:1800 秒

日历

日历表

如您所见,我将 1 月 1 日设置为 08:30,因此它不计算时间(假期)。所以我有一组以相同方式设置的假期。

周末被排除在外,见日历表,这样就被排除了,时间从第一个工作日开始计算。

我已经尝试了多次,但没有成功让它按我的意愿工作。

希望各位大师能帮我实现这一目标。

标签: sqlsql-servertsql

解决方案


经过几天搜索这个论坛。我正在寻找的答案可以在这里找到。 以分钟为单位计算两个日期之间的时差(仅工作时间)


推荐阅读