Foros del Web » Programando para Internet » PHP »

Problema con ORDER BY

Estas en el tema de Problema con ORDER BY en el foro de PHP en Foros del Web. Hola gente. En un foro que hice guardo la fecha del ultimo POST que hubo para que se ordene con ella (de la fecha mas ...
  #1 (permalink)  
Antiguo 21/12/2004, 03:37
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 10 meses
Puntos: 2
Problema con ORDER BY

Hola gente.

En un foro que hice guardo la fecha del ultimo POST que hubo para que se ordene con ella (de la fecha mas actual hasta la fecha más vieja, es decir, en forma DESCendente).

El problema es que el campo "fechaultimo" tiene el contenido de esta forma: 22/08/04 - 03:59:34 y el ORDER BY solo me reconoce el primer numero, por lo que me ordena los topics de esta forma:

22/08/04 - 03:59:34
21/12/04 - 06:06:46
18/12/04 - 05:10:19
18/08/04 - 04:15:26

ETC, creo que entienden mi problema, en lugar de estar el 21/12/04 y 18/12/04 primero y segundo, respectivamente, se encuentra el 22/08 solo porque el día es mayor al otro...

Como puedo arreglar esto sin modificar la inserción en la DB?

Gracias de antemano.
__________________
I Love Programming...
  #2 (permalink)  
Antiguo 21/12/2004, 03:43
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

¿El campo es de tipo texto? Si es asi, te lo esta ordenando bien. La ordenacion se hace caracter a caracter. El 1 es menor que el 2, todas las cadenas que empiecen por 1 estaran antes que las que empiecen por 2.

Si quieres manejar fechas como fechas, el campo debe ser de tipo date. Y no te preocupes por el formato, solo lo debes insertar en formato año-mes-dia. Luego para mostrarlo existen funciones mysql para formatearlo en formato hispanico.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 21/12/2004, 03:47
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 10 meses
Puntos: 2
Si cambio el campo a DATE, como tengo que insertar la fecha? año-mes-dia año/mes/dia ¿?
__________________
I Love Programming...
  #4 (permalink)  
Antiguo 22/12/2004, 02:02
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 10 meses
Puntos: 2
Hola gente.

Cambie el campo de CHARVAR a DATETIME, el problema es que ahora la fecha me aparece de este ordenada de este modo:

2029-08-04 09:10:33
2022-08-04 03:59:34
2021-12-04 16:41:31

Además me aparece ese 20 delante del día, que no se que es, intente sacarlo editando el campo, pero se vuelve a poner....
__________________
I Love Programming...
  #5 (permalink)  
Antiguo 22/12/2004, 02:23
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 10 meses
Puntos: 2
Ya pude solucionarlo, el problema era que yo estaba insertando los datos de esta forma dia-mes-año en lugar de año-mes-dia.

Hay alguna forma para pasar el formato del campo DATE al formato hispano? (dia-mes-año).
__________________
I Love Programming...
  #6 (permalink)  
Antiguo 22/12/2004, 06:36
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
MySQL internamente guarda la fecha en formato ingles. Pero con DATE_FORMAT (www.mysql.com/date_format) puedes en tu consulta formatear la salida del campo como necesites.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 22/12/2004, 13:11
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 10 meses
Puntos: 2
Josemi, muchas gracias.

Estuve leyendo sobre la funcion DATE_FORMAT en la url que me pasaste y quize hacer una prueba, el tema es que me tira un undefined function

Aca pongo el codigo:

Código PHP:
<? 
include("../../includes/db.php");
$sql mysql_query("SELECT * FROM foro_temas ORDER BY id DESC LIMIT 0,1"); 
while(
$row=mysql_fetch_array($sql)){
$fechita=$row[fecha];
}
$fecha=DATE_FORMAT("'.$fechita.'",'%d-%m-%Y %H:%i:%S');
echo 
$fecha;
?>
El error es:
Fatal error: Call to undefined function: date_format() in /home/tomas/public_html/PHP/multimedio/foro/pr.php on line 7

La linea 7 es:
$fecha=DATE_FORMAT("'.$fechita.'",'%d-%m-%Y %H:%i:%S');

Creo que el error es por la version de mysql o porque el server tiene deshabilitada esta funcion, puede ser?, o estoy haciendo algo mal?
__________________
I Love Programming...
  #8 (permalink)  
Antiguo 22/12/2004, 13:13
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 10 meses
Puntos: 2
Perdon, me olvide, las "" y '' de "'.$fechita.'" son solo porque estaba probando, tambien probe con $fechita, '.$fechita.', '$fechita', etc...
__________________
I Love Programming...
  #9 (permalink)  
Antiguo 26/12/2004, 18:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
La funciòn DATE_FORMAT es de Mysql .. no de PHP .. es parte del SQL concreto para trabajar con fechas que incorpora Mysql ..

En www.mysql-hispano.com tienes tutoriales de SQL para Mysql y temas afines para trabajar con BD y Mysql.

En www.mysql.com tienes el manual oficial de Mysql y su SQL concreto . busca ahì informaciòn sobre esa (y otras funciones para trabajo con fechas) de Mysql.

Un saludo,
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 17:13.