2014-02-28 105 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