SQL - Seleccionar fecha registro < que otro o el mayo

 
Vista:

Seleccionar fecha registro < que otro o el mayo

Publicado por akhasis (8 intervenciones) el 07/06/2010 18:57:56
Hola,

tengo una tabla en la que tengo almacenadas fechas. Necesito seleccionar, en una sola consulta, la máxima fecha que sea menor que el día de hoy, y si no existe ninguna que cumpla el requisito, la mayor fecha de la base de datos.

Estoy probando con ifs con selects anidados, pero me salen consultas bastante tochas, y creo que tiene que haber alguna forma elegante de hacerlo pero no se me ocurre como plantearlo.

Gracias por vuestra atención,
akhasis
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

RE:Seleccionar fecha registro < que otro o el m

Publicado por Leonardo Josue (1173 intervenciones) el 08/06/2010 00:17:52
Buenas tardes Akhasis:

En tu post no mencionas qué manejador de bd estás utilizando... no estoy muy seguro de qué es lo que necesitas, tal vez si pusieras algún ejemplo con datos pudiera ser más claro. Por lo pronto te dejo este ejemplo en ORACLE

select to_char(max(fechaini), 'dd/mm/yyyy') as fecha
from
rh_tr_bitacora_caphums where to_date(to_char(fechaini, 'dd/mm/yyyy'), 'dd/mm/yyyy') < to_date(to_char(sysdate, 'dd/mm/yyyy'), 'dd/mm/yyyy')

Este query hace lo siguiente. Suponiendo que tengas los siguientes datos:

Fecha
----------
07/06/2010
02/06/2010
01/06/2010
31/05/2010
29/05/2010

La consulta te regresaría la siguiente fecha 02/06/2010 que es la fecha máxima menor que la fecha actual... Espero que te sirva, sino pues como te comenté, pon algunos datos de ejemplo y qué esperarías de salida para poder ayudarte. Tambien recuerda poner qué manejador de BD 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
0
Comentar

RE:Seleccionar fecha registro < que otro o el m

Publicado por akhasis (8 intervenciones) el 08/06/2010 08:29:12
Hola Leonardo Josué,

muchas gracias por tu respuesta. Pero, como siempre, parece que no consigo explicar del todo lo que necesito. Utilizando el ejemplo que tú has propuesto:

Fecha
----------
07/06/2010
02/06/2010
01/06/2010
31/05/2010
29/05/2010

me es útil la consulta que me has sugerido, pero necesito que si la fecha de hoy fuera menor que la menor (29/05/2010), la consulta me devuelva la fecha máxima de la tabla (07/06/2010).

Gracias de nuevo por tu atención,
akhasis
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

RE:Seleccionar fecha registro < que otro o el m

Publicado por akhasis (8 intervenciones) el 08/06/2010 10:45:42
Se me ha olvidado aclarar que uso mysql.

Un saludo,
akhasis
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
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

RE:Seleccionar fecha registro < que otro o el m

Publicado por Leonardo Josue (1173 intervenciones) el 08/06/2010 16:48:23
Hola de nuevo akhasis

creo que ahora sí quedó más claro qué es lo que necesitas... hice algunos ajustes a la instrucción de ORACLE y la adecué a MySQL... sería lo siguiente.

select case when
((select date_format(max(fecha), '%d/%m/%Y') as fecha from fechas
where fecha < str_to_date('01/06/2010', '%d/%m/%Y')) is null)
then
(select date_format(max(fecha), '%d/%m/%Y') as fecha from fechas)
else
(select date_format(max(fecha), '%d/%m/%Y') as fecha from fechas
where fecha < str_to_date('01/06/2010', '%d/%m/%Y'))
end as fecha
from dual;

Para el ejemplo supuse que tu tabla se llama fechas y que el campo para comparar se llama fecha. en este caso estoy comparando la fecha 01/06/2010, con los datos que se tomaron de ejemplo entonces debe regresar 31/05/2010... si cambias esta fecha y pones por ejemplo 29/05/2010, al no existir ningún registro con fecha menor a la que mandas como parámetro entonces te regresa 07/06/2010, que es la máxima de la tabla...

Saludos y espero tus comentarios.
Leo.
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

RE:Seleccionar fecha registro < que otro o el m

Publicado por Carlos (1 intervención) el 25/06/2014 05:12:11
Hola, justo estoy con algo similar, resulta que tengo por ejemplo los siguientes campos
RUC FEC_DOCU
20200000 01/09/2010
20200000 02/10/2010
20200000 15/11/2011
20200000 25/11/2012
20500000 01/08/2009
20500000 22/10/2010
20500000 25/11/2010
20500000 25/12/2011
:
:
Me solicitan un reporte si es en escel mucho mejor de la ultima compra de los clientes, lo que realice fue estraer el maestro de documentos de cliente pero como veran muestra todas las compras de los clientes por ejemplo el cliente 20200000 tiene movimientos desde el 01/09/2010 pero a mi solo me interesa obtener su ultimo movimiento es decir la del 25/11/2012, como puedo hacerlo por foxpro, como comprenderan el registro de la tabla supera los 10mil filas para hacer uno por uno, 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