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

Operaciones con Fechas..

Estas en el tema de Operaciones con Fechas.. en el foro de SQL Server en Foros del Web. Hola a Todos: Mi problema es algo no muy facil para mi ya que soy nuevo en Sql.. Bueno al grano.. mi problemilla es el ...
  #1 (permalink)  
Antiguo 21/08/2009, 15:36
 
Fecha de Ingreso: junio-2009
Mensajes: 12
Antigüedad: 14 años, 10 meses
Puntos: 0
Operaciones con Fechas..

Hola a Todos:

Mi problema es algo no muy facil para mi ya que soy nuevo en Sql..
Bueno al grano.. mi problemilla es el siguiente, tengo una tabla de productos en donde tengo un campo de tipo DateTime (Fecha_Caducidad)..
Ahora..

1.-Tengo que saber si ya esta caducado el producto.

2.-saber cuantos dias han trasncurrido apartir de la fecha de Caducidad..

Todo con una Consulta o 2 respectivamente


como decia es algo no muy sencillo, les agradeceria mucho al que ose ayudarme..

Gracias..

Última edición por yoelito79; 21/08/2009 a las 15:58
  #2 (permalink)  
Antiguo 21/08/2009, 16:02
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: Operaciones con Fechas..

Utilizando la funcion DATEDIFF(), a leer un poco su ayuda en linea.......

SELECT DATEDIFF(dd, FechaCaducidad, GETDATE()) FROM.................
  #3 (permalink)  
Antiguo 24/08/2009, 04:41
 
Fecha de Ingreso: agosto-2009
Mensajes: 10
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Operaciones con Fechas..

Hola yoelito,

bueno, pues completando un poco la respuesta de isslas, yo diría que tu consulta tendría que parecerse a ésta:

DECLARE @fecha_de_caducidad date
SET @fecha_de_caducidad = '2009-06-26'

SELECT (CASE WHEN DATEDIFF(DAY, dateCreated, @fecha_de_caducidad)<=0
THEN 1
ELSE 0
END)AS estaCaducado,
(CASE WHEN DATEDIFF(DAY, dateCreated, @fecha_de_caducidad)<=0
THEN DATEDIFF(DAY, dateCreated, @fecha_de_caducidad)
END) AS diasDesdeFechaCaducidad
FROM debitor

Lo que haces es definir la fecha de caducidad que tú quieras, en mi caso he decidido que la fecha de caducidad es el 26-06-2009.
Después defino una columna que será mostrada y se llamará "estáCaducado". Es decir, (miFecha - fechaDeCaducidad) <= 0. Sie está caducada arroja un 1(true), en caso contrario un 0(false).

Finalmente defino otra fecha, la diferencia entre la fecha seleccionada y la de caducidad y muestro el número. Por ejemplo, si el resultado fuera 3 eso significaría que el producto caducó hace tres días.

Usando los siguientes datos

tabla: debitor
columna: dateCreated
2009-06-19
2009-06-26
2009-06-26
2009-06-26
2009-06-26
2009-06-26
2009-06-26
2009-06-26
2009-06-26
2009-07-02
2009-07-10
2009-07-16
2009-07-16
2009-08-18

RESULTADO:
estaCaducato | fechaDeCaducidad
0 NULL ---> esta línea significa que no está caducado(estaCaducado = false)
1 0 ---> esta línea significa que está caducado, exactamente hoy caduca
1 0
1 0
1 0
1 0
1 0
1 0
1 0
1 -6 -----> esta línea significa que está caducado (1 = true), hace exactamente 6 días
1 -14
1 -20
1 -20
1 -53

Espero que te haya servido colega. Hasta la próxima.

Diego

Última edición por diego_hanseatico; 24/08/2009 a las 07:32
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 11:36.