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

dfsfsdf

Estas en el tema de dfsfsdf en el foro de SQL Server en Foros del Web. Perdon por el titulo, apenas me di cuenta pero no me deja editarlo Hola, Estoy intentado obtener la diferencia de 2 fechas sin contar los ...
  #1 (permalink)  
Antiguo 23/04/2014, 09:33
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
dfsfsdf

Perdon por el titulo, apenas me di cuenta pero no me deja editarlo
Hola, Estoy intentado obtener la diferencia de 2 fechas sin contar los fines de semana, esto ya funciona lo que no funciona muy bien es la diferencia que te da de un dia a otro, es decir si le pasas la fecha de hoy la de mañana, te dice q no hay dia de diferencia cuando te deberia de decir que si es uno.

Por ejemplo:
Código SQL:
Ver original
  1. DECLARE @d1 DATETIME,
  2.         @d2 DATETIME
  3.  
  4. SELECT @d1 = '2014-21-04',
  5.        @d2 = '2014-22-04'
  6.  
  7. SELECT Datediff(dd, @d1, @d2)
  8.        + CASE WHEN Datepart(dw, @d1) = 7 THEN 1 ELSE 0 END
  9.        - (Datediff(wk, @d1, @d2) * 2 )
  10.        - CASE WHEN Datepart(dw, @d1) = 1 THEN 1 ELSE 0 END +
  11.        - CASE WHEN Datepart(dw, @d2) = 1 THEN 1 ELSE 0
  12.        END
Esto me regresa 0 y yo quiero que me regrese 1, ya que si hay un día de diferencia de un día entre hoy y mañana.

Alguien me puede ayudar?
Saludos,
Luis Franco

Última edición por th3r0rn; 23/04/2014 a las 09:40
  #2 (permalink)  
Antiguo 23/04/2014, 10:22
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: dfsfsdf

Código SQL:
Ver original
  1. DECLARE @d1 datetime, @d2 datetime
  2. SELECT @d1 = '20140421',  @d2 = '20140422'
  3.  
  4. SELECT datediff(dd, @d1, @d2) - (datediff(wk, @d1, @d2) * 2) -
  5.        CASE WHEN datepart(dw, @d1) = 1 THEN 1 ELSE 0 END +
  6.       CASE WHEN datepart(dw, @d2) = 1 THEN 1 ELSE 0
end
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 24/04/2014, 17:00
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: dfsfsdf

No funciona
  #4 (permalink)  
Antiguo 24/04/2014, 17:15
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: dfsfsdf

prueba con esto:
Código SQL:
Ver original
  1. DECLARE @d1 DATETIME,
  2.         @d2 DATETIME
  3.  
  4. SELECT @d1 = '2014-21-04',
  5.        @d2 = '2014-22-04'
  6.  
  7. SELECT Datediff(dd, @d1, @d2) AS dato1,
  8.        CASE WHEN Datepart(dw, @d1) = 7 THEN 1 ELSE 0 END AS dato2,
  9.         (Datediff(wk, @d1, @d2) * 2 ) AS dato3,
  10.         CASE WHEN Datepart(dw, @d1) = 1 THEN 1 ELSE 0 END AS dato4,
  11.        CASE WHEN Datepart(dw, @d2) = 1 THEN 1 ELSE 0
  12.        END AS dato5

y ve donde estas perdiendo el valor :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 25/04/2014, 10:08
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: dfsfsdf

¿Cuál es tu rango de fechas?
__________________
MCTS Isaias Islas
  #6 (permalink)  
Antiguo 25/04/2014, 10:12
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: dfsfsdf

Cita:
Iniciado por th3r0rn Ver Mensaje
No funciona
Trata de ser más detallado.
Decir "no funciona" no es información suficiente. Ni siquiera se acerca.

Explica claramente por qué dices que no funciona, postea la query exactamente como la estás usando, el resultado que te da y también un ejemplo de lo que se supone que debería dar.
Muchas veces el problema pasa por datos que nosotros no podemos ver.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: select
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:31.