【问题标题】:sorting - Order By date ASC排序 - 按日期排序 ASC
【发布时间】:2014-09-17 12:48:55
【问题描述】:

我在 mysql 中有“日期”列以这种格式保存日期
17-09-2014 (DD-MM-YYYY)

我需要对它们进行升序排序,所以我使用了这个命令:

SELECT * FROM table ORDER BY date ASC

但我发现了这个结果:

17-09-2014
18-09-2015
19-09-2014

应该是:

17-09-2014
19-09-2014
18-09-2015

它只排序一天而不是完整日期

【问题讨论】:

  • 正确的解决方法是将此列的类型从它看起来的 varchar 更改为 proper DATE/DATETIME type,这样排序将自动正常工作。
  • 哪个日期类型是您的日期列?
  • 这些日期不保存为mysql本机数据类型datedatetime,因此您可能需要在排序时使用str_to_date函数将其转换为实际日期
  • 您的数据类型必须是日期并存储为 YYYY-MM-DD

标签: mysql


【解决方案1】:

试试这个:

SELECT * FROM table ORDER BY STR_TO_DATE(date,'%d-%m-%Y') ASC

【讨论】:

    【解决方案2】:

    您可以使用STR_TO_DATE() 将您的字符串转换为 MySQL 日期值并按结果排序:

    ORDER BY STR_TO_DATE(datestring, '%d/%m/%Y')
    

    但是,最好将列转换为 DATE 数据类型,而不是使用字符串

    【讨论】:

      猜你喜欢
      • 2013-11-13
      • 2013-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 2014-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多