Date from Date to
2018-12-11 2019-01-08
2019-01-08 2019-02-09
2019-02-10 2019-03-14
2019-03-17 2019-04-11
2019-04-15 2019-05-16
2019-05-16 2019-06-13
输出将是这样
Date from Date to Days
2018-12-11 2019-01-08 0
2019-01-08 2019-02-09 1
2019-02-10 2019-03-14 3
2019-03-17 2019-04-11 4
2019-04-15 2019-05-16 0
2019-05-16 2019-06-13 -
答案 0 :(得分:0)
您需要lead()
和一个日期差异函数:
select
date_from,
date_to,
datediff(day, date_to, lead(date_from) over(order by date_from)) days
from mytable
datediff()
是一个SQLServer函数。在其他RDBMS中具有等效功能。
旁注:对于没有 next 记录的记录,我建议再次使用字符串值(-
),因为其他值是数字值(列中的数据类型必须为保持一致)。 null
足以满足要求(上面的查询将产生此结果)。
date_from | date_to | days :------------------ | :------------------ | ---: 11/12/2018 00:00:00 | 08/01/2019 00:00:00 | 0 08/01/2019 00:00:00 | 09/02/2019 00:00:00 | 1 10/02/2019 00:00:00 | 14/03/2019 00:00:00 | 3 17/03/2019 00:00:00 | 11/04/2019 00:00:00 | 4 15/04/2019 00:00:00 | 16/05/2019 00:00:00 | 0 16/05/2019 00:00:00 | 13/06/2019 00:00:00 | null
答案 1 :(得分:0)
要以天为单位返回两个日期值之间的差,可以使用DATEDIFF()函数,例如:
SELECT DATEDIFF(DAY, DayFrom, DayTo) AS 'DaysBetween'
FROM DateTable