2014-02-28 68 views
1

我有一个SQL表,里面有很多数据,我必须在网页中显示它们。你可以找到它here。顺便说必须将数据显示了这种方式:显示mysql表按日期排序

  1. 从最高到最低VR(数字,表示该游戏的在线分)
  2. 人即达99,999点必须从最老的显示到最新的日期。在这里你可以看到图片作为例子:

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以正确的顺序cronological不排序根据显示在变小订单。你可以帮帮我吗?

表中的日期列是varchar

+0

什么列类型是你的日期列?看起来像varchar –

+0

是的,这是一个varchar –

+0

因此,让它成为日期! – Strawberry

回答

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 
+0

它不能以正确的方式工作... –

+0

对不起,我改变了我的答案 – Dynelight

1

你的日期列的类型为VARCHAR的,因此MySQL将其视为一个字符串,并将其作为排序等。如果要按日期排序,则必须将列类型更改为DATEDATETIME

+0

它可以使用我使用的格式吗?例如“2013年10月7日” –

+0

不,您必须以2013-10-07的格式存储它。您可以使用MySQL或PHP函数重新格式化输出。 –

+0

其实它可能。请参阅http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html中的说明符部分 – Dynelight