Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

dias habiles sin sab y dom ni dias festivos

Estas en el tema de dias habiles sin sab y dom ni dias festivos en el foro de SQL Server en Foros del Web. Hola a todos, necesito hacer operaciones con fechas identificar la cantidad de dias habiles entre cada fecha sin sabados ni domingos ni dias festivos ... ...
  #1 (permalink)  
Antiguo 06/10/2010, 12:48
Avatar de citaem  
Fecha de Ingreso: agosto-2005
Mensajes: 218
Antigüedad: 17 años, 3 meses
Puntos: 0
dias habiles sin sab y dom ni dias festivos

Hola a todos, necesito hacer operaciones con fechas identificar la cantidad de dias habiles entre cada fecha sin sabados ni domingos ni dias festivos ... pero no tengo idea de como hacerlo... o por donde iniciar.... ¿alguna sugerencia?

GRACIAS
  #2 (permalink)  
Antiguo 06/10/2010, 13:17
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 16 años, 9 meses
Puntos: 96
Respuesta: dias habiles sin sab y dom ni dias festivos

Saludos

como tal no existe una funcion que me retorne las dias habiles ya que dependiendo del pais es diferente, debes crear inicialmente una tabla donde tengas alojado estos dias, debes tener en cuenta tambien semana santa, independencia, vacaciones, entre otras fechas que veas sean de importancia. Pienso que por ahi podrias empezar

Hasta Pronto!
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #3 (permalink)  
Antiguo 06/10/2010, 16:01
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 17 años, 3 meses
Puntos: 39
Respuesta: dias habiles sin sab y dom ni dias festivos

Esta funcion la encontre en la red. La adapte a mis necesidades. Te daras cuenta que tengo una tabla Feriados tal como lo dijo Nano_.

Código SQL:
Ver original
  1. ALTER FUNCTION [dbo].[DiasLaborables]
  2. (
  3.     @fch_ini DATETIME,
  4.     @fch_fin DATETIME
  5. )
  6. RETURNS DECIMAL(6,1)
  7. AS
  8. BEGIN
  9.  
  10. DECLARE @TotalDias  DECIMAL(6,1) --Con esta variable calculamos cuantos dias "normales" hay en el rango de fechas
  11. DECLARE @DiasNoLaborables INT --Con esta variable acumulamos los dias no laborables
  12. DECLARE @DiasFeriados SMALLINT --Total dias feriados entre el rango de fechas
  13. DECLARE @Cnt INT --esta variable nos sirve de contador para saber cuando lleguemos al ultimo dia del rango
  14. DECLARE @EvalDate DATETIME --esta variable es la que comparamos para saber si el dia que esta calculando es sábado o domingo
  15.  
  16. SET @Cnt = 0
  17. SET @DiasNoLaborables = 0
  18.  
  19. --Calculamos cuantos dias normales hay en el rango de fechas
  20. SELECT @TotalDias = DATEDIFF(HOUR,@fch_ini,@fch_fin) / 24.0--Se maneja diferencia de dias a nivel horas
  21.  
  22. SELECT @DiasFeriados = COUNT(1) FROM Feriados WHERE fch_feriado >= @fch_ini AND fch_feriado <= @fch_fin
  23.  
  24. WHILE @Cnt < @TotalDias
  25. BEGIN
  26.     SELECT @EvalDate = @fch_ini + @Cnt
  27.  
  28.     IF datepart(dw,@EvalDate) = 6 OR datepart(dw,@EvalDate) = 7
  29.     BEGIN
  30.         SET @DiasNoLaborables = @DiasNoLaborables + 1
  31.     END
  32.  
  33.     SET @Cnt = @Cnt + 1
  34. END
  35.  
  36. RETURN (@TotalDias - @DiasNoLaborables - @DiasFeriados)
  37.  
  38. END
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #4 (permalink)  
Antiguo 06/10/2010, 16:38
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 15 años, 4 meses
Puntos: 180
Respuesta: dias habiles sin sab y dom ni dias festivos

De hecho y como informacion adicional, ya mayoria de las soluciones, incluyen la tabla de DIAS FESTIVOS, ya que en cada pais son diferentes.
__________________
MCTS Isaias Islas

Etiquetas: dias, feriados, festivos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 19:28.