我在桌子上存放所有事件。在该表中,我有一个名为“event_date”的列。创建活动的人必须输入如下日期:d / m / Y - 例如:27/02/2013。
但是当我尝试通过event_date ASC对结果进行排序时,它并没有按照所需的顺序排列。我甚至试过用UNIX_TIMESTAMP(event_date)来命令它,但它也没有解决我的问题。
我该如何解决这个问题?
有一个解决方案;当一个人创建一个事件时,我可以将它转换为时间戳。但现在不能正确排序吗?
提前致谢。
答案 0 :(得分:1)
您必须在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')
将值转换为有效日期