SQL Server - Encontrar dia entre fechas

 
Vista:

Encontrar dia entre fechas

Publicado por torresrm (2 intervenciones) el 29/10/2015 16:33:17
Buenos días a todos, espero puedan ayudarme, les comento lo que quiero hacer.
Tengo un campo que debo llenar con un entero según unas reglas que tengo encargadas.

La tabla es la siguiente (no son todas las columnas pero los datos que vamos a usar si)

1
2
3
4
LEADTIME   |   DESPACHO ESTIMADO   |   ENTREGA   |   DIAS RETRASO
1                 06/10/2015          09/10/2015    (Para calcular)
5                 08/10/2015          10/10/2015    (Para calcular)
4                 09/10/2015          12/10/2015    (Para calcular)

El calculo es el siguiente:

"DIAS RETRASO" = ENTREGA (menos) "DESPACHO ESTIMADO" (menos) LEADTIME

La regla es la siguiente: "Si entre la ENTREGA y el 'DESPACHO ESTIMADO' hay un domingo restar 1 más"
Es decir, si existió un domingo:

"DIAS RETRASO" = ENTREGA (menos) "DESPACHO ESTIMADO" (menos) LEADTIME (menos) 1

Actualmente funciona el calculo sin la regla pero es necesaria aplicarla.

Por favor, su apoyo con el tema. Muchas gracias de antemano.
Saludos
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: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Encontrar dia entre fechas

Publicado por Isaias (4558 intervenciones) el 29/10/2015 19:42:14
¿Y cual es tu problema a resolver?, ¿Encontrar si hay un domingo entre las fechas?, Eso es muy simple.

Creas una UDF (Funcion de usuario)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
create function fn_FindSunday (@date1 datetime, @date2 datetime)
returns bit
as
 begin
 declare @bit int
 set @bit = 0
  while @date2 < @date1
   begin
    if DATEPART(dw,@date1) = 7
     begin
     set @bit = 1
     break
     end
    select @date1 = DATEADD(day, 1, @date1)
    continue
   end
   return(@bit)
  end

Y en el query, haces uso de dicha funcion:

1
2
SELECT diasretraso = datediff(dd,[despacho estimado],entrega) - (leadtime + dbo.fn_FindSunday([despacho estimado], entrega))
from #test

Resultado:

diasretraso
2
-3
-1

Como veras, estoy ocupando una tabla de paso, ¿es el resultado que esperas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Encontrar dia entre fechas

Publicado por torresrm (2 intervenciones) el 03/11/2015 22:13:16
Hola, disculpa la demora no se que pasaba con mi navegador que no me dejaba responder
Gracias por tu ayuda, me ha servido de mucho, tuve que adaptar algo del código pero me dio el 80% de la idea que necesitaba.
Gracias nuevamente.
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