MYSQL获取日期和时间存储为字符串和ORDER BY

时间:2017-08-18 02:17:30

标签: mysql sql sorting datetime sql-order-by

我有一个特定的原因,将DataBase Table中的日期和时间作为字符串存储为以下格式

  

DateFmt =" dd-MM-yyyy";
  TimeFmt =" hh:mm a&#34 ;;

现在,在获取时,我希望通过将字符串转换为日期和时间进行排序,并排序以在TableView中显示,因此具有较新字符串的行位于顶部。

如果我们存储日期和时间,这将工作

ORDER BY `DATE` DESC, `TIME` DESC

我们如何从String转换并按

使用顺序

2 个答案:

答案 0 :(得分:2)

使用str_to_date()

order by str_to_date(date, '%d-%m-%Y')

我应该补充一点:我认为没有充分的理由在数据库中以该格式存储日期。您应该使用内置日期/时间类型。它们存在是有原因的。

如果您必须将日期存储为字符串(我偶尔必须这样做),您应该使用YYYY-MM-DD格式。这是ISO标准,可以轻松转换为日期,并正确排序。

答案 1 :(得分:0)

我带来了这样的解决方案:

SQL:

SELECT * FROM NamTbl
    ORDER BY STR_TO_DATE(CONCAT(DateCol,' ',TimeCol), '%d-%m-%Y %h:%i') DESC

SQLite:

"SELECT * FROM " + NamTblVar +
             " ORDER BY STRFTIME('%d-%m-%Y %h:%i'," + DateKolVar + "|| ' ' ||" + TimeKolVar + ") DESC;";