2011-04-20 15 views
5

¿Hay alguna forma en SQLite de ORDER BY una fecha y los resultados se pueden ordenar por tiempo en lugar de por orden alfabético?Ayuda ordenando un resultado por fecha en SQLite

Por ejemplo:

SELECT * FROM details GROUP BY date; 

John |  Smith  |  April 01, 2011 
John |  Smith  |  April 03, 2011 
John |  Smith  |  April 04, 2011 
John |  Smith  |  March 25, 2011 

de marzo debe venir antes de abril.

Supongo que la respuesta aquí es almacenar mis fechas como marcas de tiempo largas, sin embargo, no estaba seguro de si podría hacerse más fácilmente con SQLite.

Gracias!

Respuesta

11

No hay un built-in DATE tipo de SQLite (como existe en algunos otros sistemas de gestión de bases de datos), pero tiene un buen complemento de funciones de fecha y hora: http://www.sqlite.org/lang_datefunc.html

Puede usar la fecha ("01 de abril de 2011") para obtener una fecha ISO-8601 (por ejemplo, 2011-04-01).

Este formato tiene las ventajas de ser una cadena legible y ser ordenable. 2011-03-25, naturalmente, viene antes del 01/04/2011 por reglas estándar de comparación de cadenas, por lo que no se requiere ninguna operación especial.

Así que, almacene las fechas en ese formato, y obtenga ese formato usando la función date() (u otra función relevante).

+0

Bastante fácil, esto funcionó para mí. ¡Muchas gracias por su explicación y ayuda! – littleK

+0

Gracias por el enlace, me salvó! ¡Parece tonto que SQLite te permita crear una columna de tipo DATETIME si puedes poner "hello" en ella! Ahora he descubierto http://www.sqlite.org/datatype3.html al menos. –

+0

Sólo tuve que publicar gracias a esto, he estado buscando y depurando una solución como esta por días. Muy buena solución, gracias! – Yenthe

-4

Prueba esto:

SELECT * FROM details GROUP BY date ORDER BY date ASC; 
+0

Err ... no. Una simple comparación de cadenas no funcionará aquí, ya que (como señala el cartel original) "March", que es una "M", vendría después de "April". – VoteyDisciple

0

Usted puede hacer algo como esto

 
select * from sometable order by date(thestringDateColumn) 

Esperanza esto ayuda