2012-05-17 21 views

Respuesta

94

Puede utilizar STR_TO_DATE() para convertir sus cadenas de valores de fecha MySQL y ORDER BY el resultado:

ORDER BY STR_TO_DATE(datestring, '%d/%m/%Y') 

Sin embargo, sería prudente para convertir la columna al tipo de datos DATE en lugar de utilizar cuerdas.

3

orden de un tipo de fecha no depende del formato de fecha, el formato de fecha es sólo para mostrar, en la base de datos, que son los mismos datos.

+0

El formato se puede utilizar para ordenar (si alguien realmente quiere, me parece extraño), pero ese tipo no puede basarse en el índice, por lo que [b] es costoso [/ b], solo se pueden ejecutar ordenaciones sobre columnas bien diseñadas con índice (rápido) y optimizado por el servidor –

29
SELECT DATE_FORMAT(somedate, "%d/%m/%Y") AS formatted_date 
.......... 
ORDER BY formatted_date DESC 
+3

¿Soy solo yo o el '% l' no funciona? Da '12' por cada mes y tuve que cambiar a'% m'. – beroe

+1

% l es por horas https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format @beroe –

118

Supongo que probablemente solo quiera formatear la fecha de salida? entonces esto es lo que buscas después de

SELECT *, DATE_FORMAT(date,'%d/%m/%Y') AS niceDate 
FROM table 
ORDER BY date DESC 
LIMIT 0,14 

¿O de verdad quieres ordenar por día antes del mes anterior al año?

+1

Me gustaría tener las 14 últimas fechas/registros:) ¡Sin embargo, el formato en la base de datos es "DD/MM/YYYY"! –

+0

¿La fecha en la base de datos es un tipo de fecha real, o es un tipo de cadena? – trapper

+2

'mysql> DESCRIBE Tabla;' y pegue la salida – trapper

3

para mi caso esto funcionó

str_to_date(date, '%e/%m/%Y') 
0

fecha formato en MySQL utilizando el código de encendido

 $from=$_POST['from']; 
     $to=$_POST['to']; 
     $table='Your table'; 
     $alias="count(userid)"; 
     $groupby="date_format(yourdate,('%Y-%m'))"; 
     $orderby=array('mostdrill'=>'DESC'); 
     $where="yourdate between '".date('Y-m-d',strtotime($from))."' and '".date('Y-m-d',strtotime($to))."'"; 
     $userdata=$this->yourmodel->function name($alias,$table,$where,'',$orderby,"",$groupby); 

espero que sea útil to know more click here

0

Si la hora es importante, solía str_to_date(date, '%d/%m/%Y %T'), la %T muestra la hora en el formato hh:mm:ss.

3

Supongo que probablemente solo quiera formatear la fecha de salida? entonces esto es lo que buscas después de

SELECT *, DATE_FORMAT(date,'%d/%m/%Y') AS niceDate 
FROM table 
ORDER BY date DESC 
LIMIT 0,14 

¿O de verdad quieres ordenar por día antes del mes anterior al año?

Cuestiones relacionadas