0

我在桌子上存储所有事件。在该表中,我有一个名为“event_date”的列。创建事件的人必须像这样输入日期:d/m/Y - 例如:27/02/2013。

但是当我尝试按 event_date ASC 对结果进行排序时,它并没有按所需的顺序出现。我什至尝试使用 UNIX_TIMESTAMP(event_date) 来订购它,但它也不能解决我的问题。

我怎样才能解决这个问题?

有一个解决方案;当一个人创建一个事件时,我可以将其转换为时间戳。但是就不能像现在这样正确排序吗?

提前致谢。

4

1 回答 1

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')

将值转换为有效日期

于 2013-02-27T11:39:49.867 回答