SQL - Fecha de vencimiento siguiente

 
Vista:

Fecha de vencimiento siguiente

Publicado por mario (4 intervenciones) el 28/07/2017 14:25:12
Hola chicos, tengo una pequeña duda que llevo dándole vueltas y no consigo solventar.

Por un lado tengo la tabla de fechas de vencimiento y por otro la de laborables/festivos.

Para cada fecha de vencimiento tengo que asignarle una fecha que sea laborable, esto quiere decir que por ejemplo:

El día 01/01/2017 es festivo en la tabla de festivos, por lo tanto tengo que tener un campo que me diga que fecha_venciminto_siguiente sea la siguiente fecha laborable en la lista, como puede ser el 02/01/2017

Teneis alguna idea sobre como se puede hacer?

Gracias y un saludo!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Fecha de vencimiento siguiente

Publicado por Isaias (1921 intervenciones) el 28/07/2017 19:33:54
Si es asi de sencillo, a tus fechas festivas, sumales un dia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Fecha de vencimiento siguiente

Publicado por mario (4 intervenciones) el 31/07/2017 09:13:23
El problema es que no se pueden preveer si los festivos van a ser 1, 2 , 3 o más días.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Fecha de vencimiento siguiente

Publicado por leonardo_josue (1173 intervenciones) el 31/07/2017 19:33:26
Hola Mario...

1
El problema es que no se pueden preveer si los festivos van a ser 1, 2 , 3 o más días.

esto lo puedes programar en una función o en un procedimiento almacenado con un ciclo iterativo... sería algo así:

1
2
3
4
5
fecha_vencimiento = fecha calculada sin ajuste --> es decir, la fecha "normal" de vencimiento.
MIENTRAS fecha_vencimiento EXISTA en la tabla de días festivos
ENTONCES
   fecha_venciminento = fecha_vencimiento + 1 DIA
FIN MIENTRAS;

es decir, a partir de la fecha de vencimiento calculada, el ciclo se puede ejecutar 0 veces (es decir que la fecha de vencimiento NO ES UN DÍA FESTIVO) o 1, 2, ... n veces HASTA ENCONTRAR UNA LA PRIMER FECHA DE CALENDARIO QUE NO SEA FESTIVO.

Haz la prueba y nos comentas, si continuas con problemas, postea con qué BD's estás trabajando y pon también el código que intentaste hacer.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Fecha de vencimiento siguiente

Publicado por mario (4 intervenciones) el 01/08/2017 11:39:43
He intentado hacer algo como esto, mi idea era tener una tabla con dos columnas, una con todas las fechas y otras que correspondieran a la siguiente fecha laborable si esta no lo fuera

1
2
3
4
5
6
7
8
9
10
11
12
DECLARE @FECHA_vencimiento DATE
DECLARE @FECHA DATE
 
SET @FECHA = (SELECT FECHA FROM FECHAS)
SET @FECHA_vencimiento = (SELECT FECHA FROM FECHAS)
 
 
WHILE EXISTS (SELECT FECHA_lab FROM CALENDARIO_laborables)
BEGIN
SET @FECHA_vencimiento= DATEADD(DAY,1,@FECHA_vencimiento)
END
SELECT @FECHA_vencimiento
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Fecha de vencimiento siguiente

Publicado por mario (4 intervenciones) el 04/08/2017 08:27:17
Finalmente lo que hice fue un contador de días laborables y utilizar ese numero en la función que necesitaba para restar dos fechas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar