2013-02-27 6 views
0

J'ai à table où je stocke tous les événements. Dans cette table, j'ai une colonne nommée "event_date". La personne qui crée un événement doit taper la date comme ceci: d/m/Y - example: 27/02/2013. Mais quand j'essaie de trier les résultats par le paramètre event_date ASC, il ne sort pas dans l'ordre désiré. J'ai même essayé de le commander avec UNIX_TIMESTAMP (event_date), mais cela ne résout pas non plus mon problème.Trier les événements par date d'événement - comment?

Comment puis-je résoudre ce problème?

Il existe une solution; Quand une personne crée un événement, je peux le convertir en horodatage. Mais n'est-il pas possible de le trier correctement comme il est maintenant?

Merci d'avance.

+0

Quel type de données est votre colonne "event_date"? – Raad

+0

Bien que vous puissiez convertir les dates en horodatages avant le tri, vous feriez mieux de stocker les dates dans un champ de type date ou horodatage et d'utiliser la base de données 'order by' pour faire le tri pour vous. –

+0

@Raad Le type est VARCHAR() – hskrijelj

Répondre

1

Vous devez stocker vos dates sous la forme AAAA/MM/JJ dans votre colonne VARCHAR pour qu'un tri alphanumérique fonctionne correctement.
Comme il est, le système tri:

27/02/2013 
01/03/2013 
06/03/2013 

comme ceci:

01/03/2013 
06/03/2013 
27/02/2013 

Si vous pouvez changer votre colonne à la DATE type de données, vous pouvez changer le format d'entrée YYYY-MM-DD ou continuer à accepter DD/MM/YYYY et de l'utilisation:

STR_TO_DATE('01/03/2013','%d/%m/%Y') 

pour convertir la valeur à une date valide