Foros del Web » Programando para Internet » PHP »

Order By

Estas en el tema de Order By en el foro de PHP en Foros del Web. Buenas.. Tengo un pequeño problema, quisiera ordenar los resultados de una consulta por fecha. La consulta sería asi $sql="SELECT * FROM $nomtabla where novedad='si' order ...
  #1 (permalink)  
Antiguo 22/07/2003, 05:34
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 10 meses
Puntos: 0
Order By

Buenas..
Tengo un pequeño problema, quisiera ordenar los resultados de una consulta por fecha. La consulta sería asi

$sql="SELECT * FROM $nomtabla where novedad='si' order by fecha DESC";

Mi problema esta en que fecha lo tengo definido en la base de datos como varchar dd/mm/aa y claro al ordenarlo me ordena solo hasta el primer /. He probado a definirlo como date en la base de datos pero no me deja este formato. Que solucion puedo tener?
  #2 (permalink)  
Antiguo 22/07/2003, 05:36
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 21 años, 1 mes
Puntos: 1
pero por fecha por que pro sacar por ejemplo los ultimos 5 registros?¿

Un Saludo
  #3 (permalink)  
Antiguo 22/07/2003, 05:39
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 10 meses
Puntos: 0
No te he entendido bien
Lo necesito para obtener todos los resultados del listado ordenado por fecha de más reciente a menos.
  #4 (permalink)  
Antiguo 22/07/2003, 05:40
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 21 años, 1 mes
Puntos: 1
si vale
pero si ordenas por fecha sera por ejemplo para sacar lso ultimos que fueron insertados los ultimos

no?¿

Un Saludo
  #5 (permalink)  
Antiguo 22/07/2003, 05:43
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 10 meses
Puntos: 0
Para sacar los ultimos insertados..

Sabes como puedo hacerlo?

Gracias DINASEN
  #6 (permalink)  
Antiguo 22/07/2003, 05:46
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

eso es porque lo guardas como varchar. Hace una comparacion de cadenas (alfabeticamente). Y alfabeticamente 01/12/2005 es menor que el 02/01/2001, porque va comparando caracter a caracter, parandose en el primero que sea distinto, y como 1 es menor que 2.

Yo de ti lo almacenaria como date. MySQL siempre lo almacenara como YYYYmmdd. Pero tu lo podras mostrar como te de la gana, usando la funcion DATE_FORMAT() de MySQL (http://www.mysql.com/doc/en/Date_and...functions.html). asi tu consulta con los campos date seria:

SELECT *, DATE_FORMAT(fecha,'%d/%m/%y') as fecha_cast FROM $nomtabla where novedad='si' order by fecha DESC

y accediendo al campo fecha_cast para mostrarlo en formato dd/mm/aa. Eso si, a la hora de guardarlo debes hacerlo en el formato YYYY/mm/dd.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 22/07/2003, 06:16
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 10 meses
Puntos: 0
Gracias!!!! Me has evitado muchos quebraderos más diciendome de entrada que no habia otra forma... jejej ;)

Ya lo tengo aplicado, y funciona perfectamente!

HASTA PRONTO!
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 13:53.