consulta jodida, a lo acertijo

sandro
10 de Febrero del 2005
Tengo una consulta jodida. O por lo menos lo es para mi, esta es la siguiente:
Tengo una tabla(FECHAS) que posee los siguientes campos:
codigo, fecha, pregunta,opcion en donde la fecha no esta ordenada, osea, el primer registro puede ser el mayor tanto como el ultimo tambien. Y yo debo encontrar una fecha dentro de la tabla que sea menor a 2005-03-00 (por decir una fecha) pero que a la vez sea la mas próxima a esta, por ejemplo 2005 -02-04 es la fecha mas proxima que 2005-01-01.

Laa forma en que intente resolverla es la siguiente, en donde primero ordene las fechas y despues obtuve todas las menores a 2005-03-00 y por útimo a todo esto : o que realize obtuve el max de fecha. El problema es que me los ordena despues de encontrar las menores y al momento de obtener la mayor de estas fechas me sale un error.

Bueno, le agradeceria mucho que me contesten esta "consulta" . Chau chau

asdf
10 de Febrero del 2005
Bastante simple, así de pronto se me ocurre esta solución.

No es necesario que ordenes por fecha. Primero seleccionas la fecha, que siendo mayor que la buscada, es la menor y el resultado lo unes a la busqueda de la fecha, que siendo menor que la fecha buscada, es la mas grande.

SELECT MIN(fecha)
FROM tu_tabla
WHERE fecha > 'tu fecha'
UNION
SELECT MAX(fecha)
FROM tu_tabla
WHERE fecha < 'tu fecha'

Saludos

asdf
10 de Febrero del 2005
Despues de releer tu pregunta me doy cuenta de que sólo necesitas el segunda select.

SELECT MAX(fecha)
FROM tu_tabla
WHERE fecha < 'tu fecha'

Este select devuelve la fecha mas grande que es menor a la fecha buscada.

Saludos de nuevo.

sandro
10 de Febrero del 2005
Hola, sdf:

ok. : )
Te cuento cual era mi error. Las comillas simples. Por eso el de mi enredo. Muchas gracias !!!