Días hábiles en sql

Solo disponible en BuenasTareas
  • Páginas : 2 (317 palabras )
  • Descarga(s) : 0
  • Publicado : 22 de agosto de 2012
Leer documento completo
Vista previa del texto
El día de hoy tengo un problema que quiero resolver, y es que debo hacer una rutina que me cuente los días hábiles que han transcurrido a partir de una fecha X hasta una fecha Y para ello deboiniciar sabiendo la cantidad de días que han transcurrido a partir de la fecha X hasta la fecha Y.

De esta forma ya tengo un número que será el límite, y al cual únicamente le restare los Sábados yDomingos que se encuentren dentro de ese intervalo de tiempo para ello veo de esta forma:

SQL Server script

SET DATEFORMAT dmy
DECLARE @Fecha_inicial DATETIME = '02/02/2012'
DECLARE @Fecha_finalDATETIME = '2/03/2012'
DECLARE @Dias_trancurridos INT = 0

SET @Dias_trancurridos = DATEDIFF(DAY, @Fecha_inicial, @Fecha_final + 1)

Ahora ya tenemos el número de días naturales que hantranscurrido a partir de la fecha inicial hasta la fecha final.

Ahora debemos tener el panorama que de que nos están pidiendo contabilizar los días hábiles, por lo tanto debemos suponer que la capturadel día inicial y el final será únicamente en un día hábil; esto nos ayuda demasiado porque podemos adelantar el día inicial al próximo Lunes y el día final lo podemos atrasar al Domingo anteriorDECLARE @Fecha_inicial_recorrida DATETIME = @Fecha_inicial
DECLARE @Fecha_final_recorrida DATETIME
DECLARE @Fecha_recorrida BIT = 0

IF (DATEPART(WEEKDAY, @Fecha_inicial) != 1)
BEGIN
SET@Fecha_inicial_recorrida = @Fecha_inicial + (8 - DATEPART ( WEEKDAY , @Fecha_inicial))
SET @Fecha_recorrida = 1
END


SET @Fecha_final_recorrida = @Fecha_final - DATEPART ( WEEKDAY ,@Fecha_final)
Una vez que recorrimos las fechas ahora si al obtener la diferencia de las fechas recorridas y dividirlo entre 7 que son los días que tiene la semana, nos devuelve el numero de fines de semana queexiste dentro de esas fechas, recurrimos a una variable tipo bit que nos indica si la fecha inicial fue recorrida, en este caso si fue recorrida entonces tenemos que aumentar un fin de semana mas....
tracking img