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

[SOLUCIONADO] Fecha de creacion y fecha de vencimiento

Estas en el tema de Fecha de creacion y fecha de vencimiento en el foro de Mysql en Foros del Web. Buenas tardes comunidad, mi duda es la siguiente: En MySql tengo una tabla llamada notificaciones con los siguientes campos. IdNotificacion titulo contenido FechaDisponible FechaVencimiento fecha_creacion ...
  #1 (permalink)  
Antiguo 09/10/2013, 13:39
 
Fecha de Ingreso: junio-2011
Mensajes: 29
Antigüedad: 13 años, 5 meses
Puntos: 0
Busqueda Fecha de creacion y fecha de vencimiento

Buenas tardes comunidad, mi duda es la siguiente:

En MySql tengo una tabla llamada notificaciones con los siguientes campos.

IdNotificacion
titulo
contenido
FechaDisponible
FechaVencimiento
fecha_creacion
fecha_modificacion
creado_por
modificado_por
IdCategoria

A traves de un formulario se le exige al usuario que coloque una fecha en la que debe aparecer esta notificacion y que queda guardada en el campo FechaDisponible y también una fecha en la que debe desaparecer esta notificacion que queda almacenada en FechaVencimiento .

Lo que deseo es saber como puedo calcular uno a uno los registros de la tabla con php y que solo me muestre los que se encuentren entre el rango entre los dos campos ya mencionados, teniendo en cuenta que las fechas siempre van a variar en todos los registros.

Si lo que estoy solicitando se puede hacer desde MySql agradecería si me dan un ejemplo o alguna clase o funcion que haga algo parecido o lo que estoy pidiendo.

Este es el lugar más fantastico para preguntar este tipo de cosas, y de aqui he aprendido mucho espero que esta vez como siempre me puedan ayudar.



Saludos,
  #2 (permalink)  
Antiguo 09/10/2013, 19:05
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Fecha de creacion y fecha de vencimiento

Tema movido desde PHP a BDD -> MySQL
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 09/10/2013, 20:51
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Fecha de creacion y fecha de vencimiento

No queda muy claro qué es lo que necesitas, pero si lo que deseas es obtener todas las noficiaciones que están vigentes a la fecha, es simplemente:
Código MySQL:
Ver original
  1. SELECT IdNotificacion, titulo, contenido, fecha_creacion, fecha_modificacion,
  2.     creado_por, modificado_por, IdCategoria
  3. FROM notificaciones
  4. WHERE CURDATE() BETWEEN FechaDisponible AND FechaVencimiento
o bien:
Código MySQL:
Ver original
  1. SELECT IdNotificacion, titulo, contenido, fecha_creacion, fecha_modificacion,
  2.     creado_por, modificado_por, IdCategoria
  3. FROM notificaciones
  4. WHERE CURDATE() < FechaVencimiento
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 10/10/2013 a las 12:30
  #4 (permalink)  
Antiguo 10/10/2013, 11:23
 
Fecha de Ingreso: junio-2011
Mensajes: 29
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Fecha de creacion y fecha de vencimiento

Muchas gracias por la respuesta, creo que no me he hecho entender, lo que sucede es que cada registro de la tabla tiene una fecha de inicio y una fecha de finalización distintas, pensaría yo que toca consultar uno a uno todos los registros, por ultimo mostrarlos y comparar cuales están dentro del rango que la misma base de datos le dice, es decir:

Registro1:

Titulo: Ejemplo1
Fecha de inicio: 2013-10-01
Fecha de Finalización: 2013-10-09

Registro2:

Titulo: Ejemplo2
Fecha de inicio: 2013-10-10
Fecha de Finalización: 2013-10-19

Registro3:

Titulo: Ejemplo3
Fecha de inicio: 2013-09-14
Fecha de Finalización: 2013-09-17

Según este ejemplo el día de hoy solo debería mostrarme el registro 2 por que es el que cumple los parámetros.

Agradezco mucho tu ayuda y tu tiempo, pero si sabes como se hace esto por favor guiame con un ejemplo claro de como se haría.

Gracias de nuevo.
  #5 (permalink)  
Antiguo 10/10/2013, 12:33
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Fecha de creacion y fecha de vencimiento

Tengo la imrpesión de que no comprendes la lógica de las consultas que te propongo.
Veamos, la primera:
Código MySQL:
Ver original
  1. SELECT IdNotificacion, titulo, contenido, fecha_creacion, fecha_modificacion,
  2.     creado_por, modificado_por, IdCategoria
  3. FROM notificaciones
  4. WHERE CURDATE() BETWEEN FechaDisponible AND FechaVencimiento

Esta devuelve únicamente registros en los que la fecha de hoy esté entre la fecha de inicio y la fecha de fin.
Esto implica que:

Cita:
Fecha actual 10-10-2013

Fecha_Inicio Fecha_Fin
2013-10-01 2013-10-09
2013-10-10 2013-10-19 -- <<Devolvera este.
2013-09-14 2013-09-17

o bien:
Código MySQL:
Ver original
  1. SELECT IdNotificacion, titulo, contenido, fecha_creacion, fecha_modificacion,
  2.     creado_por, modificado_por, IdCategoria
  3. FROM notificaciones
  4. WHERE CURDATE() < FechaVencimiento

esta consulta devolverá sólo aquellos registros donde la fecha final sea mayor a la fecha actual
Lo que en tu contexto sería:
Cita:
Fecha actual 10-10-2013

Fecha_Inicio Fecha_Fin
2013-10-01 2013-10-09
2013-10-10 2013-10-19 -- <<Devolvera este.
2013-09-14 2013-09-17
Como ves, las consultas son correctas desde ese punto de vista, pero de las dos, la primera es la óptima, porque de lo contrario podría suceder:
Cita:
Fecha actual 10-10-2013

Fecha_Inicio Fecha_Fin
2013-10-01 2013-10-09
2013-10-10 2013-10-19 -- <<Devolvera este.
2013-10-12 2013-10-19 -- <<Devolvera este tambien.
2013-09-14 2013-09-17
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 10/10/2013, 14:16
 
Fecha de Ingreso: junio-2011
Mensajes: 29
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Fecha de creacion y fecha de vencimiento

Hola

Muchas gracais,y pido disculpas por armar una tormenta en un vaso de agua.

Lo soluciones asi
Código MySQL:
Ver original
  1. SELECT IdNotificacion, titulo, contenido, FechaDisponible, FechaVencimiento, IdCategoria FROM notificacion WHERE CURDATE() >= FechaDisponible AND CURDATE() <= FechaVencimiento ORDER BY fecha_modificacion DESC

Agradezco mucho tua yuda y me contestaste en tiempo record, muchas gracias, mil y mil gracias.

Última edición por gnzsoloyo; 10/10/2013 a las 14:26 Razón: Mal etiquetado de codigo.
  #7 (permalink)  
Antiguo 10/10/2013, 14:28
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Fecha de creacion y fecha de vencimiento

Pregunta: ¿Entiendes que lo que haces es lo mismo que usar BETWEEN, como en el primer caso que te pongo?

Código MySQL:
Ver original
  1. SELECT IdNotificacion, titulo, contenido, FechaDisponible, FechaVencimiento, IdCategoria
  2. FROM notificacion
  3. WHERE CURDATE() >= FechaDisponible AND CURDATE() <= FechaVencimiento
  4. ORDER BY fecha_modificacion DESC

Es preferible en estos casos poner BETWEEN, porque internamente el algoritmo es diferente, y en consultas con muchos registros, BETWEEN es más eficiente.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 15/10/2013, 14:35
 
Fecha de Ingreso: junio-2011
Mensajes: 29
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Fecha de creacion y fecha de vencimiento

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Pregunta: ¿Entiendes que lo que haces es lo mismo que usar BETWEEN, como en el primer caso que te pongo?

Código MySQL:
Ver original
  1. SELECT IdNotificacion, titulo, contenido, FechaDisponible, FechaVencimiento, IdCategoria
  2. FROM notificacion
  3. WHERE CURDATE() >= FechaDisponible AND CURDATE() <= FechaVencimiento
  4. ORDER BY fecha_modificacion DESC

Es preferible en estos casos poner BETWEEN, porque internamente el algoritmo es diferente, y en consultas con muchos registros, BETWEEN es más eficiente.
Hola, si señor ya lo apliqué y realiza las consultas de una forma rápida y concisa, agardezco tu ayuda.

Saludos.

Etiquetas: databases, php
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 10:41.