SQL - Comparar fechas para lanzar alertas

 
Vista:
sin imagen de perfil

Comparar fechas para lanzar alertas

Publicado por Aprender (13 intervenciones) el 29/03/2017 08:04:22
Buen dia tengo una consulta tengo una tabla en la cual guardo productos a la cual le asigno un estado de productos especiales a aquellos que tienen caducidad bueno mi consulta es la siguiente no quiero asignarles una fecha de vencimiento sino que la consulta compare la fecha registrada + 90 días despues es decir si registre mi producto con fecha hoy 29-03-2017 al momento de consultar me consulte esta fecha + 90 días para así despues de pasados 90 dias del registro me lanze la alerta... como seria la consulta correcta? estoy capturando la fecha con NOW() y quiero que la comparación se haga en base a esa fecha mas 90 dias. Ayuda porfa (T_T). Gracias
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Comparar fechas para lanzar alertas

Publicado por leonardo_josue (1173 intervenciones) el 29/03/2017 16:59:05
Hola Apreder:

Con qué DBMS estás trabajando??? este dato es muy importante, pues aunque todos los motores de BD's manejan una sintaxis parecida, también es cierto que hay diferencias muy importantes con respecto al manejo de fechas.

Por ejemplo, para MySQL puedes utilizar la función DATE_ADD para sumar los días que necesites a tu fecha:

1
2
3
4
5
6
7
8
9
mysql> SELECT
    ->   DATE(NOW()) actual,
    ->   DATE_ADD(DATE(NOW()), INTERVAL 90 DAY) actual_mas_90;
+------------+---------------+
| actual     | actual_mas_90 |
+------------+---------------+
| 2017-03-29 | 2017-06-27    |
+------------+---------------+
1 row in set (0.00 sec)

Si no utilizas MySQL, es cuestión de investigar una función equivalente para el motor de BD's que estés utilizando.

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
1
Comentar
sin imagen de perfil

Comparar fechas para lanzar alertas

Publicado por Aprender (13 intervenciones) el 29/03/2017 22:37:34
Hola amigo si mira estoy usando mysql XAMP... y pues mira estoy uzando esta consulta

SELECT em.razon , pro.productodes , pe.cantidad , pa.pago , mo.moneda, mov.movimientodes, re.fecha , es.estado FROM pedidos pe INNER JOIN empresas em ON pe.rucempresa=em.ruc INNER JOIN productos pro ON pe.producto=pro.codigopro INNER JOIN pago pa ON pe.pago=pa.idpago INNER JOIN moneda mo ON pe.moneda=mo.idmoneda INNER JOIN movimiento mov ON pe.movimiento=mov.idmovimiento INNER JOIN registro re ON pe.idregistro=re.id INNER JOIN estados es ON pe.estado=es.idestado
WHERE NOW()=DATE_ADD(re.fecha,INTERVAL 1 DAY) ORDER BY fecha DESC

e tratado así con

WHERE NOW()=DATE_ADD(day,1,re.fecha)

si pongo por ejemplo

WHERE NOW()>re.fecha y tambien con NOW()<re.fecha

para probar si mi consulta corria bien y pues si en ambos casos funciona bien pero cuando le quiero añadir dias no hace nada jajajaja. (T_T)

incluso cuando la ago correr en el xamp me sale un mensaje que dice algo asi

DATE_ADD(re.fecha,INTERVAL 1 DAY)

NULL

A por cierto mi campo es DATETIME eso no tien nada que ver? Gracias
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

Comparar fechas para lanzar alertas

Publicado por Aprender (13 intervenciones) el 30/03/2017 00:07:40
Hola man logre resolverlo :D si tenia razón estaba bien así como lo pusiste tu, el problema era que en el sistema no funcionaba correctamente creo que al correr muchas consultas sature un poco jajajaja limpie todo y volví a probar tu consulta que funciono muy bien perfecta al final el WHERE quedo así

WHERE NOW()>DATE_ADD(DATE(re.fecha), INTERVAL 90 DAY) AND pe.especial='1'

y pum chakalaca probe con varias fechas y todo va perfecto. Muchas gracias
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