如何获取sql中日期范围内的天数?

时间:2017-04-12 21:14:48

标签: sql sql-server

根据从屏幕上输入的@fechaDesde - @FechaHasta和Jornada_Ini的日期(工作日开始),我希望得到员工工作的日子和他休息的日子 Pantalla

我的桌子开始主屏幕: Jornada_Ini

员工有2x1天(2天工作1休息),8种类型的天,另一名员工有8x2天(8天工作2休息)。 我和Jornada 2x1的员工一起工作

使用以下代码

DECLARE @FechaDesde datetime, @FechaHasta datetime
set @FechaDesde='2015-03-10 00:00:00.000'
set @FechaHasta='2015-03-31 00:00:00.000'
SELECT CC.NumOperador,
j.Descripcion as Jornada,
(DATEDIFF(DAY, MAX(@FechaDesde), MAX(@FechaHasta)) + 1) AS TotalDias,
((DATEDIFF(DAY, MAX(@FechaDesde), MAX(@FechaHasta)) + 1))/3 AS DiasDescansados,
(DATEDIFF(DAY, MAX(@FechaDesde), MAX(@FechaHasta)) + 1) - (((DATEDIFF(DAY, MAX(@FechaDesde), MAX(@FechaHasta)) + 1))/3) as DiasTrabajados
FROM trkOperadores O
JOIN trkJornada J ON O.cveJornada = J.cveJornada
JOIN CopCalendario CC ON O.NumOperador = CC.NumOperador
WHERE O.cveTipoOperador = 2 
AND O.NumOperador = 900200
GROUP BY  j.Descripcion, cc.NumOperador

我得到的总天数,7天休息和15天工作,这是正确的 使用下面的日历。

Calendario

从10月初到3月31日,那些绿色的是工作日,橙色的是休息的,红色的那个是缺乏的,但我仍然不会休息的日子工作正确的结果15工作7休息

但是,如果我的入境日期是3月8日,并且在我的屏幕上生成报告,我会在3月10日至31日之前请求报告而不计入进入日期会发生什么

Calendario2

然后会有14天的工作,在那里我不算错(因为它是休假一天所以我留下来因为我改变了日期来解释一下)我会休息8。 / p>

我可以做些什么来考虑我的Jornada_Ini并且能够获得日历中的结果。

我希望看到我解释!!

0 个答案:

没有答案