sql - 基于日历表的以秒为单位的营业时间功能
问题描述
我对这个论坛和 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,因此它不计算时间(假期)。所以我有一组以相同方式设置的假期。
周末被排除在外,见日历表,这样就被排除了,时间从第一个工作日开始计算。
我已经尝试了多次,但没有成功让它按我的意愿工作。
希望各位大师能帮我实现这一目标。
解决方案
经过几天搜索这个论坛。我正在寻找的答案可以在这里找到。 以分钟为单位计算两个日期之间的时差(仅工作时间)
推荐阅读
- javascript - 是否可以手动取消和重新触发 Svelte 动画?
- airflow - 在apache气流中使用UI更改任务的依赖关系
- gatsby - gatsby-node.js - 在单个父对象下添加多个图像
- c++ - C2143 语法错误缺少 ';' 在命名空间之前
- modelica - Modelica语言继承组件时如何重新声明注解?
- mongodb - 使用 Apache NiFi 将所有表从 Oracle 迁移到 Mongo DB
- tensorflow - 如何连接两个 GPU?
- c++ - c ++:为什么将true或false分配给char编译得很好
- firebase - 使用 GCP IoT Core 通过带有 JWT 的 MQTT 的持久设备连接状态
- git - git hotfix 分支的目的