with
C1 as (
select Fecha, ROW_NUMBER() over (order by Fecha) NumeroDiaHabil
from ar_fecha
)
select Fecha.Fecha , FechaCalculo.NumeroDiaHabil - Fecha.NumeroDiaHabil DiasHabilesDiferencia
from C1 FechaCalculo
cross join C1 Fecha
where FechaCalculo.Fecha = '20190430'
and Fecha.Fecha = CAST(getdate() as date);
哪个,与您的输入数据,将返回此结果:
Fecha DiasHabilesEntre
---------- --------------------
2019-04-17 7
(1 row affected)
或者您可以对其进行概括以获取特定日期与表中任何其他日期之间的差异,例如此查询:
with
C1 as (
select Fecha, ROW_NUMBER() over (order by Fecha) NumeroDiaHabil
from ar_fecha
)
select Fecha.Fecha
, FechaCalculo.NumeroDiaHabil - Fecha.NumeroDiaHabil DiasHabilesEntre
from C1 FechaCalculo
cross join C1 Fecha
where FechaCalculo.Fecha = '20190430'
and month(Fecha.Fecha) = 4;
版
经过评论,我了解到您想要的是根据您的工作日表获取两个日期之间的工作日数。
为此,您可以简单地在 CTE 中对表中的天数进行编号,然后获取您感兴趣的两个日期之间的天数索引之间的差异。
例如,要获取当前日期与 2019 年 4 月 30 日之间的差异,您可以编写如下查询:
哪个,与您的输入数据,将返回此结果:
或者您可以对其进行概括以获取特定日期与表中任何其他日期之间的差异,例如此查询:
它将返回以下结果:
原始答案
您可以使用该函数
DateDiff
来获取两个日期之间的差异。该函数可以取年、季、月、日、小时、分钟等的差异。要获取今天与表中所有日期的差异,请执行以下查询:
我不知道它是否对您有用,但在 sql sever 2008 中获取使用 DATEDIFF 的天数差异
例子:
我会退回 1 天的差价
根据您的评论:选择四月的最后一个日期并将其与当前日期进行比较。