SQL Order BY Varchar as DateTime
SQL Order BY Varchar as DateTime
我的数据库中有一个 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";
在此先感谢您的帮助。
mysql
需要使用下面的str_to_date
函数
order by str_to_date(col_name,'%d/%m/%Y');
您使用的是 T-SQL 语法(Microsoft SQL 服务器),而您的标签表明您实际上使用的是 MySQL 服务器。在 MySQL 中你需要使用 STR_TO_DATE 代替,例如:
SELECT * FROM Evenement ORDER BY STR_TO_DATE(DateEvenement, '%d/%m/%Y')
我的数据库中有一个 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";
在此先感谢您的帮助。
mysql
str_to_date
函数
order by str_to_date(col_name,'%d/%m/%Y');
您使用的是 T-SQL 语法(Microsoft SQL 服务器),而您的标签表明您实际上使用的是 MySQL 服务器。在 MySQL 中你需要使用 STR_TO_DATE 代替,例如:
SELECT * FROM Evenement ORDER BY STR_TO_DATE(DateEvenement, '%d/%m/%Y')