Comunidad de diseño web y desarrollo en internet online

Comparando fechas...

Citar            
MensajeEscrito el 19 Jul 2010 03:18 pm
Tengo una tabla creada en mi hosting phpMyAdmin llamada: programacion_de_actuaciones tiene un campo date, quiero hacer un query que filtre solo las 4 proximas tareas programadas a la fecha actual, es decir:

Si hoy es dia 19/07 y en la tabla aparecen campos con la fecha de hoy (19/07)quiero que los muestre (puede ser uno o varios para la misma fecha)y los correspondientes a las dias siguientes al 19/07, solo quiero que muestre 4 resultados...ahora aqui mi problema puede ser que solo haya dos actos posteriores al dia actual, entonces querria que mostrase, los 2 anteriores a la fecha y los dos posteriores, en pantalla siempre tiene que haber 4 resultados y eses tienen que ser los mas proximos a la fecha actual.

Mediante php meto en una variable la fecha_actual bien, ahora puedo hacer un query comparando esta fecha con las fechas de la tabla y filtrar las que sean iguales o superiores, guardar en una varible el numero de filas del resultado para saber cuantos resultados obtuve y asi poder saber si hay mas de 4 o menos....hasta aqui creo que lo se hacer, lo logico ahora seria hacer otro query comparando las fechas y buscando justo las dos anteriores a la fecha_actual, no se bien como se hace este tipo de comporaciones pero eso no creo que me resulte muy complicado (eso espero, si alguien me lo explica seria ya....como el gol de iniesta je..)y tampoco se si este metodo es el mejor y mas rapido, creo que debe haber alguna manera de hacerlo todo en una consulta y que se mas facil.

Gracias!! saludos!!

Por ayabass

19 de clabLevel



 

chrome
Citar            
MensajeEscrito el 19 Jul 2010 10:33 pm

Código MySQL :

SELECT id, `campo_date`, ABS(DATEDIFF(`campo_date`, '2010-07-19')) as diferencia  FROM `tabla` ORDER BY diferencia ASC LIMIT 4;


No te engañes, aun tiene errores... Usa UNION para buscar fechas anteriores y posteriores

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 20 Jul 2010 02:35 pm
Me han dado la solucion:

SELECT t2.* FROM (SELECT t1.fecha, t1.diferencia as dif, t1.ord2 FROM ((SELECT fecha, DATEDIFF(CURDATE(),fecha) diferencia, 'ant' ord2 FROM `tabla` where fecha < CURDATE() ORDER BY fecha DESC limit 4 )
UNION ALL
(SELECT fecha,DATEDIFF(fecha,CURDATE()), 'post' FROM `tabla` where fecha > CURDATE() order by fecha ASC limit 4))t1 ORDER BY t1.diferencia, ord2 LIMIT 4)t2 ORDER BY t2.fecha

Gracias!

Por ayabass

19 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.