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

necesito ayuda ORDER BY en mysql

Estas en el tema de necesito ayuda ORDER BY en mysql en el foro de Mysql en Foros del Web. Que tal a todos, tengo una pregunta, Tengo una tabla con los datos de facturas, entonces para mostrar en una pagina todas las facturas le ...
  #1 (permalink)  
Antiguo 30/12/2009, 08:21
 
Fecha de Ingreso: abril-2009
Mensajes: 19
Antigüedad: 14 años, 11 meses
Puntos: 0
necesito ayuda ORDER BY en mysql

Que tal a todos, tengo una pregunta,
Tengo una tabla con los datos de facturas, entonces para mostrar en una pagina todas las facturas le pongo un orden por fecha. La cuestion es que mi fecha se guarda en el formato dd/mm/YYYY , y al hacer el orden quiero que siga desendientemente la fecha, le pongo ORDER BY y tengo SUBSTRING(dccfecha,1,2) el dia, SUBTRING(dccfecha,4,2) el mes y SUBSTRING(dccfecha,7,4) el año. Entonces lo que quiero es que el orden siga primero año, despues mes y por ultimo dia por ejemplo, tengo facturas del 09/08/2009, 10/07/2009, 15/07/2009, 20/09/2009 y 02/01/2010 , entonces se muestren en el orden 02/01/2010, 20/09/2009, 09/08/2009, 15/07/2009 y 10/07/2009. Espero se me haya entendido. Muchas gracias
  #2 (permalink)  
Antiguo 30/12/2009, 08:37
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: necesito ayuda ORDER BY en mysql

Si. Se entiende.
Precisamente es por eso que se recomienda usar columnas DATE y DATETIME para guardar esos datos, y no VARCHAR, como sin duda has usado. El problema de mostrar una fecha en el formato "dd/MM/yyyy HH:mm:ss" es algo que se debe resolver en el momento de leer los datos, y no "fabricar" un tipo de datos que luego te trae estos problemas.

Bueno, La solución es simplemente indicar en el ORDER BY que se convierta la fecha recibida como cadena en un DATE o DATETIME, según el caso:
Código MySQL:
Ver original
  1. FROM tabla
  2. ORDER BY STR_TO_DATE(dccfecha, '%d/%m/%Y');
Sobre el uso de STR_TO_DATE, puedes consultar el Manual de Referencia: 12.5. Funciones de fecha y hora

Te recomiendo que no guardes fechas en formatos no estándar, no solamente porque tendrás problemas a la hora de realizar consultas, sino también porque reducirás la performance del DBMS.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 30/12/2009, 08:47
 
Fecha de Ingreso: abril-2009
Mensajes: 19
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: necesito ayuda ORDER BY en mysql

Muchas gracias, esto me soluciono el problema. Y efectivamente todas mis fechas las guarde en VARCHAR debido a que necesito mucho control en ellas, ya que mi programa se vale mucho de estas, solamente que no sabia si guardandolas en date iban a ser tan maleables, pero voy a leer bien esta parte para ver si hago un cambio de tipo de valores. Nuevamente muchas gracias por la ayuda.
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




La zona horaria es GMT -6. Ahora son las 15:14.