当前位置: 首页 > 知识库问答 >
问题:

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

彭宏深
2023-03-14

我有下面的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

这不是正确的排序。我做错了什么?

共有1个答案

西门磊
2023-03-14

问题是date是一个varchar,它是按词典顺序排序的,请尝试将其强制转换为date:

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

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

 类似资料:
  • 我有一个sql查询 所以我显然想按价格从高到低来订购。然而,它似乎是取第一个数字并按其排序。我的理论是,它将它视为字符串,由于列是varchar,这是有意义的。然而,这是第三方数据,所以我被它卡住了。我怎样才能订购,使较大的数字在前? 这是一个如何排序的例子

  • 问题内容: 我只是想按ID对评论进行排序,但是这样做并不幸运。无法弄清楚该怎么办,因为这使我感到困惑: 你们碰巧知道我如何通过DESC中的ID来订购评论吗?谢谢! 问题答案: 首先,您要进行两次相同的操作。这是不必要的,因为您可以计算行数并从单个查询中获取数据。除此之外,用注释表的唯一ID替换您,即可设置好。替换为以颠倒排序顺序。

  • 我正在开发一个基于SqlLiteDataBase的Android应用程序。使用query方法查询数据库时,我希望按日期列升序排序。看来订货人不工作了。 调试期间的游标mQuery字段显示以下内容: (为了方便起见,我删除了不相关的列) 运行查询后,我想检查是否有任何条目,因此我调用: 然后我做一些逻辑,每当我想移动到光标上的下一行时,我运行: DateText列定义为DATETIME: 你能告诉我

  • 我需要有一个DESC订单,因为我想限制100,所以我得到前100个值。有人能建议一个办法吗...?

  • 问题内容: 现在我用下面的查询按每篇文章的auto_increment id进行即时排序 我想知道如何按我创建的日期字段排序,该字段通过strtotime()存储当前日期,它应该查询从最新到最旧的日期。 当前代码 问题答案: 只需更改ORDER BY中的列即可:

  • 我有一个带有自动增量主键列和datetime列的表。我想返回按创建日期排序的行。 我按日期或主键订购有关系吗?我想这是一个更快的by主键,而不是日期格式或时间戳。新记录将具有更大的主键。然而,每个人都按日期字段排序。