Hola tengo una tabla que contiene muchas lineas, cada una tiene un campo de año, mes y día.
Necesito obtener todas las líneas en que la fecha sea la más alta.
Alguien sabe como hacerlo?
Mis conocimientos de SQL son básicos.
Saludos.
| |||
Ayuda con consulta Hola tengo una tabla que contiene muchas lineas, cada una tiene un campo de año, mes y día. Necesito obtener todas las líneas en que la fecha sea la más alta. Alguien sabe como hacerlo? Mis conocimientos de SQL son básicos. Saludos. |
| ||||
Respuesta: Ayuda con consulta Si usas el MAX(campo)
Código SQL:
Ver original Saludos...
__________________ *** Saludos. |
| |||
Respuesta: Ayuda con consulta Primero debes aclararnos alguna cosa. Dices que tienes en cada registro o línea campos para año, mes día. Se tratará de campos de tipo INT o VARCHAR. Te has equivocado al plantear tu base, creo, pues deberías haber creado un campo tipo DATE para incluir la fecha con el formato año-mes-día, ej., 2010-06-27 y ahora podrías obtener lo que quieres sin tener que reunir los datos ni hacer casting a fecha. Para obtener todas las líneas cuya fecha es la más alta, tendrás que usar MAX(campofecha) pero tendrás que usarlo en una subconsulta. Imaginemos que ya tienes un campofecha de tipo DATE con las fechas incluidas como te dije SELECT * FROM tutabla WHERE campofecha = (SELECT MAX(campofecha) FROM tutabla) Si no pudieras cambiar ahora los tres campos a uno sólo, podríamos ofrecerte otra solución con la función STR_TO_DATE, pero debes decirnos cómo guardas los datos del año, mes y día, por ej., si guardas con el 0 por delante en el mes y día |
| ||||
Respuesta: Ayuda con consulta Cita: Eso lo hubieses podido resover usando las funciones de YEAR(), MONTH() y DAY(), y manejar el problema de la aplicación por medio de las consultas y no forzar el modelo de datos.Lo ideal seria tener el campo tal y como lo dices pero es una adaptación para una aplicación antigua y cada campo (año, mes y día) está en una variable de tipo entero. Eventualmente, si se llega a reemplazar la aplicación el modelo de la base resultará ineficiente (ya lo es al tener los datos de esa forma).
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| |||
Respuesta: Ayuda con consulta Cita: Solucionado, posteo la consulta por si a alguien le sirve.
Iniciado por PepitoVadeCurt Gracias por responder. Lo ideal seria tener el campo tal y como lo dices pero es una adaptación para una aplicación antigua y cada campo (año, mes y día) está en una variable de tipo entero. He hecho la consulta pero tengo el problema que los meses y años que son de 1 digito, los pone como debe, con 1 digito.
Código:
Me devuelve la fecha máxima de cada divisa que le paso. SELECT max(concat(concat(año,mes),dia)) FROM divisas where codigo='USD'
Código:
No sé si podría hacer que me devolviera el día y mes en un 0 delante si es de un digito.2010216 Saludos.
Código:
Con la función digits, muestra el cero de delante.SELECT max(concat(concat(año,digits(mes)),digits(dia))) FROM divisas where codigo='USD' gnzsoloyo tienes toda la razón pero hay que adaptarse a lo que hay. Mi trabajo no es modificar la tabla, sinó generar un informe con los datos de ella. Saludos. |
Etiquetas: |