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

ordenar fechas con formato Lunes 00/00/0000

Estas en el tema de ordenar fechas con formato Lunes 00/00/0000 en el foro de Mysql en Foros del Web. Buenas y santas. Tengo una base de datos mysql y estoy trabajando con php. La cuestion es que estoy rabeando con ordenar en sentido descendente ...
  #1 (permalink)  
Antiguo 31/03/2012, 07:54
 
Fecha de Ingreso: abril-2011
Mensajes: 49
Antigüedad: 13 años, 6 meses
Puntos: 3
ordenar fechas con formato Lunes 00/00/0000

Buenas y santas. Tengo una base de datos mysql y estoy trabajando con php. La cuestion es que estoy rabeando con ordenar en sentido descendente las fechas en formato Lunes 00/00/0000 que llamo de una consulta a la base de datos desde mi php. El campo de la bd se llama 'fecha' y esta en VARCHAR. He recorrido millones de foros pero no he logrado dar en la tecla. Por favor necesito una mano. Desde ya muchas gracias por todo lo que puedan hacer por mi.
  #2 (permalink)  
Antiguo 31/03/2012, 09:04
 
Fecha de Ingreso: junio-2011
Mensajes: 139
Antigüedad: 13 años, 5 meses
Puntos: 42
Respuesta: ordenar fechas con formato Lunes 00/00/0000

Hola tvzbien,

Seguramente tendras causas justificables para almacenar las fechas de esa forma.

Con la información que indicas quizás algo como http://sqlfiddle.com/#!2/fe3c3/1 pueda ayudarte.
  #3 (permalink)  
Antiguo 02/04/2012, 01:57
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: ordenar fechas con formato Lunes 00/00/0000

A pesar de que la solución que te da wchiquito es excelente, para salir del paso, lo que no es optimo es guardar fechas con ese formato, es mucho mejor guardar la fecha en el formato nativo yyyy-mm-dd y luego usar las Date and Time Functions para obtener la fecha en el formato deseado.

Si por lo que sea entra la fecha "Lunes 1/1/2012" no se va a leer bien (las 10 ultimas posiciones son "s 1/1/2012") y nada te asegura que sea coherente (el 1/1/2012 no era lunes) en cambio si entra la fecha 2012-01-01 fácilmente puedes listar "Domingo 01/01/2012" y tienes todo el soporte del motor para controlar fechas....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 02/04/2012 a las 02:09
  #4 (permalink)  
Antiguo 03/04/2012, 06:50
 
Fecha de Ingreso: abril-2011
Mensajes: 49
Antigüedad: 13 años, 6 meses
Puntos: 3
Respuesta: ordenar fechas con formato Lunes 00/00/0000

Asi es wchiquito, por que importo datos de otra bd que tiene el formato de ese modo y esta guardada la fecha en VARCHAR. Con respecto a tu ayuda la verdad que no alcanzo a entender el codigo, he probado pero no he prosperado. Por ej que serian las `d`? en SELECT
`d`.`id`, `d`.`fecha` . Aclaro que la consulta la debo hacer en PHP. Me podrias explicar como funciona ese codigo asi lo adapto al mio. Muchas gracias de antemano por tu tiempo.
  #5 (permalink)  
Antiguo 03/04/2012, 07:49
 
Fecha de Ingreso: junio-2011
Mensajes: 139
Antigüedad: 13 años, 5 meses
Puntos: 42
Respuesta: ordenar fechas con formato Lunes 00/00/0000

Hola tvzbien,

Lo primero que debes tener presente es el comentario de quimfv, se debe garantizar que los últimos 10 caracteres corresponderan a una fecha, con el formato dd/mm/aaaa.

Si estas importando los datos de otra fuente como otra base de datos, deberías transformar dicha columna al tipo correcto que necesites (por ejemplo: DATE) y almacenarla así en tu base de datos y no heredar problemas de terceros.

En cuanto a la consulta, `d` es un alias a la tabla derivada que se genera en el WHERE, por lo que `d`.`fecha` esta haciendo referencia a la columna `fecha` de dicha tabla derivada.

Espero te sea útil.

Etiquetas: formato, lunes, php, sql, campos
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 09:05.