计算与日期范围相关的天数列

Posted

技术标签:

【中文标题】计算与日期范围相关的天数列【英文标题】:Calculate Day Number Column in Relation to Date Range 【发布时间】:2021-01-18 22:44:18 【问题描述】:

我正在尝试获取 StartDate 相对于 EndDate 的天数作为临时表中的列。所以 12/16 是第一天,12/17 是第二天,以此类推。

当前:

ID StartDate EndDate
01 2020/12/16 2020/12/18
02 2020/12/17 2020/12/18
03 2020/12/18 2020/12/18

需要的结果:

ID StartDate EndDate Day in Range
01 2020/12/16 2020/12/18 1
02 2020/12/17 2020/12/18 2
03 2020/12/18 2020/12/18 3

可以在 SQL Server 中做吗?

【问题讨论】:

你做了哪些研究?你试过什么?你在哪里卡住了? 到目前为止,我已经尝试过使用 datediff,但我不一定要寻找持续时间。我也尝试过使用行号进行分区,但有些情况下可能有两行具有相同的开始日期。 【参考方案1】:

嗯。 . .这是你想要的吗?

select t.*,
       datediff(day, min(startdate) over (partition by enddate), startdate) + 1
from t;

这将返回当前行的开始日期与与该结束日期关联的最早开始日期之间的差异。

【讨论】:

以上是关于计算与日期范围相关的天数列的主要内容,如果未能解决你的问题,请参考以下文章

如何使用两个日期范围进行计算(分区依据和之前)

求大神JS制作日期计算器的源代码

如何计算同一列中值的天差?

hutool日期工具类相关:获取某月所有周某周的起止时间或所有日期计算连续天数

如何在以下示例中计算出日差

根据包含日期范围的观察数量按日期计算