计算日期范围的重叠量

时间:2019-10-24 13:25:27

标签: node.js database postgresql momentjs

我尝试存储不同服务的可用时间。 (每个工作日(8、9小时),24/7等) 一个工作日可以有不同的办公时间(08:00-16:00或09:00-17:00、08:00-18:00等)

也有一些国定假日,正常的工作日就像一个周末,而任何给定的周末也可以是工作日。

将其存储在数据库(PostgreSQL)中的最佳方法是什么?

背景

主要目标是计算给定时间范围内的分钟数是否在服务时间内。

A)服务时间仅为工作日(08:00-16:00),日期范围为 [2019-10-21 15:00(星期一)-2019-10-22 09:00(星期二)]。整个范围长达18小时,但服务时间只有2小时。

B)我也想计算我是否知道开始时间(2019-10-21 15:00),并且有3个小时来完成工作(在工作时间内),那么什么时候可以结束日期? (2019-10-22 10:00-星期一 1小时,星期二 2小时)

1 个答案:

答案 0 :(得分:0)

我将完全按照您的描述存储数据。

您可以有一个用于工作窗口的表格,即周一至周五08:00至16:00

每个服务都有其日期范围,开始和停止。我猜一个服务将有多个日期范围,因此您可能需要一个包含startstop和{{1}}列的日期范围表。

当您要计算某些内容时,您可以获取服务数据并获取工作日数据,然后计算出实际的服务时间以及需要回答的其他问题:)