2015-04-23 4 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');