mysql - 按日期排序 DESC 在 mysql 中不起作用

标签 mysql sql

我有如下的 MYSQL 表

CREATE TABLE `mytable` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `subject` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
 `date` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
 `timestamp` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
 PRIMARY KEY (`id`),
 UNIQUE KEY `UQ_4242c0a8c07abd9adef59c123f76f3827bb47589` (`date`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

我的查询是:

 select * from `mytable` order by `date` DESC

这没有正确排序。我做错了什么?

最佳答案

问题是 date 是按字典顺序排序的 varchar,尝试将其转换为日期:

 select * from `mytable` order by STR_TO_DATE(`date`, '%m/%d/%Y') DESC

无论如何这是一个临时解决方案,您应该修复您的架构并以适当的格式存储它。

关于mysql - 按日期排序 DESC 在 mysql 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25394122/

相关文章:

sql - PL/Python 错误 : NameError: global name 'name of user-defined function' is not defined

sql - 按生日排序,不考虑年份

mysql - XAMPP 在 Windows 7 启动时自动启动

java - 是否可以在多个 Artifactory 实例上运行一个 MySQL 实例

javascript - 如何仅在 html onload(刷新)(无点击)上从另一个 php 页面调用 php 函数

java - EJB 多个 FK 不工作

php - 如果日期和时间不是TIMESTAMPDIFF格式那么如何用mysql找到间隔?

c# - 从代码测试存储过程是否为 "Parse"/"Compile"

mysql - CONCAT 字符串中列中的最后一个数字

mysql - 何时/应该在 1 中存在两个实体 :1 Relationship become a Single Entity?