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

SELECT de registros activos de los próximos 15 días de entre dos fechas

Estas en el tema de SELECT de registros activos de los próximos 15 días de entre dos fechas en el foro de Mysql en Foros del Web. Hola, Os cuento lo que quiero: Tengo una tabla de Exposiciones de Pintura con los campos fecha-inicio y fecha-fin . Entonces, es posible que una ...
  #1 (permalink)  
Antiguo 25/04/2009, 11:20
 
Fecha de Ingreso: abril-2004
Mensajes: 100
Antigüedad: 20 años
Puntos: 0
SELECT de registros activos de los próximos 15 días de entre dos fechas

Hola,

Os cuento lo que quiero:

Tengo una tabla de Exposiciones de Pintura con los campos fecha-inicio y fecha-fin. Entonces, es posible que una exposición haya empezado hace 1 mes y acabe dentro de 2 meses del día de hoy.

¿Como puedo hacer el SELECT para que me muestre las exposiciones que están activas los próximos 15 días incluídas las que empiezan dentro de 14 días?

La verdad es que no encuentro la manera de hacerlo y no se si es posible.

¿Se os ocurre algo?

Gracias.
  #2 (permalink)  
Antiguo 25/04/2009, 12:38
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: SELECT de registros activos de los próximos 15 días de entre dos fechas

Si es posible poropopo!! (Por cierto muy fino tu nick jajajaja )

Prueba con:

Código mysql:
Ver original
  1. select *from exp_pinturas where fec_exposicion

Te comparto todas las funciones para el manejo de fechas en mysql
http://dev.mysql.com/doc/refman/5.0/...functions.html

Un saludo,
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 25/04/2009, 12:40
Avatar de Avatar810  
Fecha de Ingreso: agosto-2007
Ubicación: Por rumbos Regios
Mensajes: 485
Antigüedad: 16 años, 8 meses
Puntos: 23
Respuesta: SELECT de registros activos de los próximos 15 días de entre dos fechas

Pues debe cumplir las sigientes condiciones

Fecha_inicio<Hoy+14
Fecha_fin>Hoy

La dificultad de esto es hacer la suma de los 14 dias a la fecha de hoy
__________________
Una demo siempre funcionará correctamente hasta que toque algo tu (hasta ahora) cliente.
Avatar810
  #4 (permalink)  
Antiguo 25/04/2009, 14:02
 
Fecha de Ingreso: abril-2004
Mensajes: 100
Antigüedad: 20 años
Puntos: 0
Respuesta: SELECT de registros activos de los próximos 15 días de entre dos fechas

Cita:
Si es posible poropopo!! (Por cierto muy fino tu nick jajajaja )
Si, un homenaje a Manolo Escobar

No se si me habéis entendido bien:
Debería de salir un registro siempre que fecha_inicio o fecha_fin o los 2 estuvieran en los próximos 15 días.

He probado con esto si no os he entendido mal:
Código PHP:
WHERE exposiciones.fecha_inicio
BETWEEN DATE_SUB
NOW( ) , INTERVAL 2 WEEK 
AND 
DATE_ADDNOW( ) , INTERVAL 2 WEEK 
ORDER BY exposiciones.fecha_fin
LIMIT 0 
30 
Pero no funciona porque si fecha_inicio tiene más de 15 días no sale.
  #5 (permalink)  
Antiguo 25/04/2009, 14:11
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: SELECT de registros activos de los próximos 15 días de entre dos fechas

No te he entendido muy bien.

La consulta que te pasé muestra el rango de fechas desde hace 15 días hasta dentro de 15 días. lo que lista los registros comprendidos entre 11 de abril (2 semanas atrás) y mayo 9 (15 días después de hoy)

Puedes explicar con un ejemplo la salida que buscas?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #6 (permalink)  
Antiguo 25/04/2009, 14:57
 
Fecha de Ingreso: abril-2004
Mensajes: 100
Antigüedad: 20 años
Puntos: 0
Respuesta: SELECT de registros activos de los próximos 15 días de entre dos fechas

Sí, mira , por ejemplo hoy es 25 de abril. y en la BBDD tengo una exposición que empezó el 25 de Febrero y acaba el 30 de Julio. Entonces en la salida debería de salir está exposición ya que en la página se muestran las exposiciones que se pueden ver en los próximos 15 días, no se si me entiendes.

No se si se puede hacer. A lo mejor tengo que añadir algún campo más, no se ...
  #7 (permalink)  
Antiguo 25/04/2009, 16:33
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: SELECT de registros activos de los próximos 15 días de entre dos fechas

Se me ocurre que hagas la comparación con fecha que finaliza la exposición.

prueba esto:

Código mysql:
Ver original
  1. select *from exposiciones where
  2. (to_days(fechafinexp)) > to_days(now()) and now()

Me cuentas como te va.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #8 (permalink)  
Antiguo 26/04/2009, 00:54
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: SELECT de registros activos de los próximos 15 días de entre dos fechas

Si lo que buscas es que haya al menos un día de exposición entre los 15 próximos días (14 y el de hoy), intenta esto (no lo he probado).

Código sql:
Ver original
  1. SELECT * FROM `exposiciones`
  2.   WHERE (fechainiexp <= CURDATE() AND fechafinexp >=CURDATE())
  3.     OR (fechainiexp >= CURDATE() AND fechainiexp <= DATE_ADD(CURDATE(), INTERVAL 15 DAY))
  4.   GROUP BY idexposicion
La lógica es que si la primera fecha de la exposición es anterior o igual a hoy, la última debe ser posterior o igual a hoy para que al menos haya un día; y si la fecha de inicio es posterior a hoy, la de inicio debe ser al mismo tiempo anterior o igual a de hoy a quince días para que al menos haya un día. Esos serían los dos únicos supuestos en que un día de exposición coincide con el rango. Buscas los dos supuestos y te traes las exposiciones.

Última edición por jurena; 26/04/2009 a las 04:17
  #9 (permalink)  
Antiguo 26/04/2009, 01:26
 
Fecha de Ingreso: abril-2004
Mensajes: 100
Antigüedad: 20 años
Puntos: 0
Respuesta: SELECT de registros activos de los próximos 15 días de entre dos fechas

jurena, esto que dices funciona pero me devuelve repetido 4 veces el registro de las exposiciones donde la fecha de inicio y la fecha de fin están dentro de los próximos 15 días.

Respecto a la solución de Huesos52, funciona pero muestra también los registros de la exposiciones que aún no han comenzado. Aquí habría que añadir una "condición" (Que no se si existe esta función) para que no muestre nada si la fecha de inicio está más allá de los próximos 15 días.
  #10 (permalink)  
Antiguo 26/04/2009, 04:00
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: SELECT de registros activos de los próximos 15 días de entre dos fechas

agrupa por exposición, es decir, pon al final GROUP BY idexposicion (no sé cómo se llama ese campo)

o si sólo seleccionas un campo te bastará con añadir SELECT distinct idexposicion

Y así te valdrá. Usa el group by si te traes todos los campos. He editado y añadido el GROUP BY a la consulta.

Última edición por jurena; 26/04/2009 a las 04:17
  #11 (permalink)  
Antiguo 26/04/2009, 04:57
 
Fecha de Ingreso: abril-2004
Mensajes: 100
Antigüedad: 20 años
Puntos: 0
Respuesta: SELECT de registros activos de los próximos 15 días de entre dos fechas

Vale jurena ha funcionado perfecto. Gracias a todos por la ayuda.

¡No se que haría sin vosotros!!.
  #12 (permalink)  
Antiguo 26/04/2009, 11:55
Avatar de Avatar810  
Fecha de Ingreso: agosto-2007
Ubicación: Por rumbos Regios
Mensajes: 485
Antigüedad: 16 años, 8 meses
Puntos: 23
Respuesta: SELECT de registros activos de los próximos 15 días de entre dos fechas

Lastima que no le pude dar seguimiento ayer pues ya habia salido de la oficina

jurena lo que escribes es correcto pero estas haciedo procesos de mas, al ver la logica de grupos y simplificarla es la solucion que di desde el inicio... (bueno yo ponia 14 en lugar de 15 pero en logica equivalente)

Fecha Inicio elemento de (-Infinito, Hoy] UNIÓN ( [Hoy, Infinito) INTERSECCIÓN (-Infinito,Hoy+15] )
Simplificando
Fecha Inicio elemento de (-Infinito, Hoy] UNIÓN ( [Hoy, Hoy+15]
Simplificando
Fecha Inicio elemento de (-Infinito, Hoy+15]

Fecha Fin elemento de [Hoy, Infinito)

Condicion:
Fecha_inicio<=Hoy+15
Fecha_fin>=Hoy

Codigo:
Código SQL:
Ver original
  1. SELECT * FROM `exposiciones`
  2.   WHERE fechafinexp >=CURDATE() AND fechainiexp <= DATE_ADD(CURDATE(), INTERVAL 15 DAY))
  3.   GROUP BY idexposicion

Con esto ya le quitas trabajo a tu BBDD y si puedes quitar el * le quitas mas chamba; esto solo como best practices...

Saludos y que bueno que ya quedara resulta tu duda
__________________
Una demo siempre funcionará correctamente hasta que toque algo tu (hasta ahora) cliente.
Avatar810
  #13 (permalink)  
Antiguo 26/04/2009, 13:12
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: SELECT de registros activos de los próximos 15 días de entre dos fechas

Felicidades, Avatar810,
tienes razón, tu lógica es más económica y la consulta más eficiente. Yo me quedo con ella, pues cubre todas las posibilidades. Es la mejor.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 02:32.