【问题标题】:ORDER BY bad format date columnORDER BY 错误格式日期列
【发布时间】:2013-12-30 17:36:37
【问题描述】:

我如何按此排序(在 date 列中) - 不太好 - 日期格式。

7 Dec 2013 - 5 Feb 2014
31 Oct 2013 - 29 Dec 2013
3 Dec 2013 - 31 Jan 2014
3 Dec 2013 - 31 Jan 2014

我只需要按第一个日期排序,这将是

7 Dec 2013
31 Oct 2013
3 Dec 2013
3 Dec 2013

我已经检查了 STR_TO_DATE,但如果我没有错,我需要一个字符串来输入,而我没有。每个日期都在数据库列 date 中。

【问题讨论】:

  • Filipe Silva 它是一个字符串 (varchar)。 Veelen 我现在不知道如何解决这个问题,所以我还没有开始,所以我在这里问。
  • 将日期保留为字符串非常糟糕,您应该返工并放置两个日期列,这样会更加高效和方便。
  • 同意@AlexandreLavoie。请参阅这篇文章了解如何执行此操作:stackoverflow.com/questions/1861489/…
  • Filipe Silva 的解决方案可以作为创建两个新列的起点。

标签: mysql date format


【解决方案1】:

试试这个:

SELECT * FROM tab1
ORDER BY str_to_date(left(col1,INSTR(col1,' -')), '%d %M %Y')

这将获取' -'左侧的字符串,然后将其转换为日月年的日期格式并将其排序为日期。

sqlfiddle demo

附言我同意之前的 cmets,如果您使用两列作为每个周期的 start_date 和 end_date,这很容易避免。而且速度也会更快。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-21
    • 2010-12-05
    • 2012-05-24
    • 2019-06-09
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多