我正在尝试按日期订购数据库,但我在排序时遇到问题。数据库是通过PHP在SQL中创建的,我要用于排序的列以这种格式添加日期数据:
2011-10-26 07:10
上述日期也是'varchar'。 编辑:感谢建议
改为'datetime'任何想法,以便我可以使用日期列对表中的行进行排序?
我制作了一个单独的脚本来缩小这个问题:
<?php
$con = mysql_connect("localhost","root","");
mysql_select_db("thoughtsdata",$con);
$order = "SELECT *
FROM `thoughts`
ORDER BY `thoughts`.`DateTime` ASC
LIMIT 0 , 30";
if(!mysql_query($order,$con))
{
die('Could not order database: ' . mysql_error());
}
mysql_close($con);
?>
我现在在浏览器中运行此脚本时没有出现任何错误,但我的表仍然未分类:
Edit Inline Edit Copy Delete Hey sdfasdf 2011-10-26 19:41:00
Edit Inline Edit Copy Delete Hey asdfasdf 2011-10-26 07:47:00
Edit Inline Edit Copy Delete Hey dfasdfasdf 2011-10-26 19:47:00
Edit Inline Edit Copy Delete aaa how to sort this 2011-10-26 07:54:00
Edit Inline Edit Copy Delete aaa any progress!!?? 2011-10-26 08:13:00
Edit Inline Edit Copy Delete oh no! grrr 2011-10-26 08:21:00
Edit Inline Edit Copy Delete zzTOp thinking about sorting this out! 2011-10-27 19:12:00
在我看来发生的事情是,数据库已经排序,但它不会那样。
答案 0 :(得分:1)
您可以尝试使用这样的订单子句:
ORDER BY UNIX_TIMESTAMP(fieldname) ASC
但是,如果您的字段采用YYYY-MM-DD hh:mm
格式,那么alpha排序应该可以正常工作。这一切都假设您正在使用现有系统,并且不允许/不允许更改字段的数据类型。
答案 1 :(得分:1)
转换它的更好方法,例如用php,到“正常”的datetime / timestamp,然后使用sort。
这样做的主要原因是它比使用字符串排序要快得多。
答案 2 :(得分:0)
您可以将varchar转换或转换为实际的日期时间,因为它实际上是一个日期时间。