我有一个表,我存储所有的事件。在这个表中,我有一个名为"event_date"的列。创建事件的人必须像这样输入日期:d/m/Y -例如:27/02/2013。
但是当我尝试按event_date ASC对结果进行排序时,它并没有按期望的顺序出现。我甚至试过用UNIX_TIMESTAMP(event_date)排序,但它也不能解决我的问题。
我该如何解决这个问题?
有一个解;当一个人创建一个事件时,我可以将其转换为时间戳。但是,难道不可能像现在这样正确地排序吗?
您必须在VARCHAR列中将日期存储为YYYY/MM/DD,才能使字母数字排序正常工作。
这样,系统将排序:
27/02/2013
01/03/2013
06/03/2013
:
01/03/2013
06/03/2013
27/02/2013
如果您可以将列更改为DATE数据类型,则可以将输入格式切换为YYYY-MM-DD
或继续接受DD/MM/YYYY
并使用:
STR_TO_DATE('01/03/2013','%d/%m/%Y')
将值转换为有效的日期