显示按日期排序的mysql表

时间:2014-02-28 13:25:30

标签: php mysql sql

我有一个包含大量数据的SQL表,我必须在网页中显示它们。你可以找到它here。顺便说一下,数据必须以这种方式显示:

  1. 从最高VR到最低VR(表示此游戏在线积分的数字)
  2. 必须从最旧的日期到最新的日期显示达到99,999分的人。在这里你可以看到一张图片作为例子:
  3. enter image description here

    我的代码工作正常,因为第1点满意,因为列表从最高点(99,999)的人到最小点(50,000)的人。我有另一个问题。

    我需要用99,999分对人们进行排序。事实上,如果你看一下我在第2点链接的图片,右边的表格按照按时间顺序排序的记录(99,999),但左边的表格没有。

    <?php
    $a=mysqli_connect("localhost","username","password","my_mk7vrlist");
    
    $res= mysqli_query($a,"SELECT * FROM 0_vrs_europe ORDER BY `vrs` DESC, `date` DESC LIMIT 0 , 150");
    
    while($row = mysqli_fetch_array($res))
      {
       //here I print the rows of my html table
      }
    
    mysqli_close($a);
    ?>
    

    这是我为左边的表编写的代码,它没有按时间顺序排序。特别是我想到了这个:

    ORDER BY `vrs` DESC, `date` DESC
    

    使用此代码,表格将根据vrs以低级顺序显示,但具有99,999 VR的人员未按正确的时间顺序排序。你可以帮帮我吗?

    我的表中日期为varchar的列。

2 个答案:

答案 0 :(得分:1)

您如何存储日期?如果你像字符串一样保存它们,那么order_by desc将不起作用。您需要将值保存为时间戳,或者在执行查询时将其转换为时间戳。

请参阅:mySQL convert varchar to date

要考虑您的字符串格式进行选择,请参阅以下内容中的“说明符”部分: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

假设您的字段名称为日期。

select date_format(str_to_date(date, '%D %M %Y'), '%D %M %Y'); 

从我给你的链接:

%D  Day of the month with English suffix (0th, 1st, 2nd, 3rd, …)
%M  Month name (January..December)
%Y  Year, numeric, four digits

答案 1 :(得分:1)

您的日期列属于VARCHAR类型,因此MySQL会将其视为字符串并对其进行排序。如果您想按日期排序,则必须将列类型更改为DATEDATETIME