mysql - 在 MySQL 中按 DESC 排序日期/时间 VARCHAR

标签 mysql sql-order-by

我有这 3 个 VARCHAR 数据:

Mar 06 2018 06:42:08
Mar 04 2017 23:21:15
Feb 21 2018 14:48:46
Jul 29 2016 11:56:22
Mar 06 2018 06:41:54

我想知道如何构建我的查询:

SELECT `users`.`last_online` FROM `users` ORDER BY ... DESC

这样我就可以得到以下输出

Mar 06 2018 06:42:08
Mar 06 2018 06:41:54
Feb 21 2018 14:48:46
Jul 29 2017 11:56:22
Mar 04 2017 23:21:15

注意我不想使用 DATETIME,我正在使用 VARCHAR,请不要提出其他建议。

更新

根据 Uuerdo 答案中的文档,我尝试了以下查询,但尽管看起来可行,但事实并非如此:

 SELECT `users`.`last_online` FROM `users` ORDER BY STR_TO_DATE(`users`.`last_online`, '%M %d %Y %h:%i:%s') DESC

我需要它来考虑MM/DD/YYYY H:i:S。我需要使用哪些函数来正确构建此查询,以及生成的查询是什么?

最佳答案

尝试使用这个:

SELECT `users`.`last_online`,
FROM `users` 
ORDER BY STR_TO_DATE(`users`.`last_online`, '%M %d %Y %H:%i:%s') DESC

您需要使用“%H”而不是“%h”来表示 24 小时时间。

关于mysql - 在 MySQL 中按 DESC 排序日期/时间 VARCHAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49182472/

相关文章:

php - 查找多维数组的键

mysql - 为 ORDER BY 强制使用索引是否更好?

java - 依赖 order by 中空值的顺序是否安全?

php - SQL - ORDER 表并选择第 25 行之后的所有内容

mysql - 无法发出有效的 SQL 请求。 MySQL

mysql - 按原始顺序显示列名?

mysql - 对 mysql 结果进行排序。按 col1 排序,按 col2 分组

sql - 为什么我们需要 `order by` in row_number() over(按列名排序)?

c# - ASP.NET使用SqlConnection连接MySQL

mysql - sql查询计数(*)返回意外结果