Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按事件日期排序事件-如何排序?_Php_Date_Sorting - Fatal编程技术网

Php 按事件日期排序事件-如何排序?

Php 按事件日期排序事件-如何排序?,php,date,sorting,Php,Date,Sorting,我有一张桌子,我把所有的事件都放在那里。在该表中,我有一个名为“event_date”的列。创建事件的人员必须键入如下日期:d/m/Y-例如:27/02/2013 但是,当我尝试按事件日期ASC对结果进行排序时,结果并没有按所需的顺序出现。我甚至试着用UNIX\u时间戳(event\u date)来订购它,但它也不能解决我的问题 我怎样才能解决这个问题 有一个解决办法;当一个人创建事件时,我可以将其转换为时间戳。但是,难道不可能像现在这样对它进行正确的排序吗 提前感谢。您必须在VARCHAR列中

我有一张桌子,我把所有的事件都放在那里。在该表中,我有一个名为“event_date”的列。创建事件的人员必须键入如下日期:d/m/Y-例如:27/02/2013

但是,当我尝试按事件日期ASC对结果进行排序时,结果并没有按所需的顺序出现。我甚至试着用UNIX\u时间戳(event\u date)来订购它,但它也不能解决我的问题

我怎样才能解决这个问题

有一个解决办法;当一个人创建事件时,我可以将其转换为时间戳。但是,难道不可能像现在这样对它进行正确的排序吗


提前感谢。

您必须在VARCHAR列中将日期存储为YYYY/MM/DD,才能使字母数字排序正常工作。
按原样,系统将分类:

27/02/2013
01/03/2013
06/03/2013
像这样:

01/03/2013
06/03/2013
27/02/2013
如果可以将列更改为日期数据类型,则可以将输入格式切换为
YYYY-MM-DD
或继续接受
DD/MM/YYYY
,并使用:

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

若要将值转换为有效日期

您的“事件日期”列的数据类型是什么?虽然您可以在排序之前将日期转换为时间戳,但最好将日期存储在日期或时间戳类型的数据库字段中,并使用数据库
order by
为您进行排序。@Raad类型为VARCHAR()应该是日期类型我看不出像y-m-d这样保存日期有什么问题,您可以在mysql中轻松地将其转换为d/m/y。当您选择时,请尝试日期格式(事件日期,“%d/%m/%y”)