SQL Order BY Varchar as DateTime

时间:2015-04-23 08:56:22

标签: mysql sql datetime sql-order-by

我的数据库中有一个varchar行,看起来像dd / mm / yyyy。 我试图订购它,但现在它按顺序排序 - >月 - >年而不是年 - >月 - >一天。

我尝试过使用

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>";
    }

如果我使用

,它可以完美地工作(使用错误的顺序...)
$SQL = "SELECT * FROM Evenement ORDER BY DateEvenement";

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您需要使用str_to_date

以下的mysql功能
order by str_to_date(col_name,'%d/%m/%Y');

答案 1 :(得分:0)

您正在使用T-SQL语法(Microsoft SQL Server),而您的标记建议您实际使用的是MySQL Server。在MySQL中,您需要使用STR_TO_DATE,例如:

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