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

MYSQL Fetch Date and Time Stored as String and ORDER BY

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

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

现在,在获取时,我想通过将字符串转换为日期和时间来排序,并排序以显示在 TableView 中,因此较新的行排在最前面。

如果我们存储为日期和时间,这将起作用,

ORDER BY `DATE` DESC, `TIME` DESC

我们如何从 String 转换并使用 order by

使用str_to_date():

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

我应该补充:我想不出在数据库中以这种格式存储日期的充分理由。您应该使用内置的 date/time 类型。它们的存在是有原因的。

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

我的解决方案是这样的:

SQL :

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

SQL站点:

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