sql - 根据日期范围计算天数

标签 sql sql-server sql-server-2016

我有如下数据

create table #Temp(Id int, FromDate date, ToDate date)
Insert into #Temp
values(1,'9/1/2019','9/1/2019'),
        (2,'9/2/2019','9/3/2019'),
        (3,'9/2/2019','9/3/2019'),
        (4,'9/4/2019','9/6/2019'),
        (5,'9/7/2019','9/7/2019')

我正在尝试计算差异并创建日期,即第 1 天、第 2-3 天等...

预期结果

Id  FromDate    ToDate      Display
1   01/09/2019  01/09/2019  Day 1
2   02/09/2019  03/09/2019  Day 2-3
3   02/09/2019  03/09/2019  Day 2-3
4   04/09/2019  06/09/2019  Day 4-6
5   07/09/2019  07/09/2019  Day 7

我尝试使用 datediff 下面的代码,但不确定如何与前一行关联并获取日期范围

select *, DATEDIFF(DAY,FromDate,ToDate)
from #Temp

最佳答案

使用第一个值

select *
 , datediff(day, first_value(FromDate) over(order by FromDate), FromDate) + 1
 , datediff(day, first_value(FromDate) over(order by FromDate), ToDate) + 1
from #Temp

关于sql - 根据日期范围计算天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58524246/

相关文章:

python - 使用 MySQLdb 处理 SQL 查询中的多个参数

.net - SQL Server 2016 Express 是否支持始终加密?

sql - TSQL Raiserror 语法不正确,遵循 MSD 指南

sql - 如何在远程服务器上创建到本地PC的链接服务器

MySQL:在程序中使用 "IF NOT IN"

sql - SSRS 2005 字段中不同值的总和

c# - 无法将参数值从字符串转换为日期时间

sql - '1' 附近的语法不正确。 SQL Pivot 需要 ID、QUOTED_ID 或 '.' 错误

sql - 获取指定日期的上一个星期二(或一周中的任何给定日期)

sql - 如何监控SQL Server 2005上执行的sql语句