2015-04-23 133 views
0

我的數據庫中有一個varchar行,看起來像dd/mm/yyyy。 我試圖訂購它,但現在它按天 - >月 - >年而不是年 - >月 - >日排序。SQL Order BY Varchar as DateTime

我使用

SELECT * FROM Evenement 
ORDER BY CONVERT(DateTime, DateEvenement,103)"; 

所以應該正確順序嘗試。

可悲的是,用它當

Erreur sur la requete : <font color="red">SELECT * FROM Evenement ORDER BY CONVERT(DateTime, DateEvenement,103)|Erreur de syntaxe près de 'DateEvenement,103)' à la ligne 1</font> 

而且我似乎無法弄清楚什麼是錯的,我得到一個錯誤。

代碼:

$SQL = "SELECT * FROM Evenement ORDER BY CONVERT(DateTime, DateEvenement,103)"; 
$AllEvents = parcoursRs(SQLSelect($SQL)); 
header('Content-type: application/json'); 
echo json_encode($AllEvents); 

parcoursRS:

function parcoursRs($result) { 
    if($result == false) return array(); 

    while ($ligne = mysqli_fetch_assoc($result)) 
     $tab[]= $ligne; 

    return $tab; 
} 

當我試圖用我的JSON:

success: function (data) { 
    console.log(data); 

    listEvent = ""; 
    for (i = 0; i < data.length; i++) { 
     listEvent += "<div class='evenement'>"; 
     listEvent += "<input type='button' class='delete' value='Supprimer' title='" + data[i].idEvenement + "'/>"; 
     listEvent += "<label>Évènement: " + data[i].Titre + "</label></br><label>Heure de début: " + data[i].HeureDebut + "</label></br><label> Heure de fin: " + data[i].HeureFin + "</label></br><label> Description : " + data[i].Presentation + "</label></br><label> Date : " + data[i].DateEvenement + "</label></br>"; 
     listEvent += "</div>"; 
    } 

它完美(使用錯誤的順序OFC .. )如果我用

$SQL = "SELECT * FROM Evenement ORDER BY DateEvenement"; 

在此先感謝您的幫助。

+0

爲什麼不將日期存儲在具有日期數據類型的列中? – Jens

回答

0

您正在使用T-SQL語法(Microsoft SQL Server的),而你的標籤建議你實際使用的是MySQL服務器。在MySQL中,您需要使用STR_TO_DATE,例如:

SELECT * FROM Evenement ORDER BY STR_TO_DATE(DateEvenement, '%d/%m/%Y') 
1

您需要使用如下str_to_date功能mysql

order by str_to_date(col_name,'%d/%m/%Y');