【问题标题】:Mysql order by date which in format month(string). day(number), year(number)Mysql 按日期排序,格式为月份(字符串)。日(数),年(数)
【发布时间】:2021-04-02 09:52:26
【问题描述】:

我有一个包含此格式示例的日期的字段:Feb. 2020 年 15 月 15 日,我需要按此字段对结果 DESC 进行排序,但它保存为 VARCHAR,我无法更改。有解决办法吗?

我已经尝试 STR_TO_DATE 在 mysql 查询中排序,但没有按预期工作..

提前感谢您的任何帮助和建议。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    STR_TO_DATE() 可以根据值使用正确的格式和标点符号。在您的日期值Feb. 15, 2020 的情况下,正确的STR_TO_DATE() 格式是:

    STR_TO_DATE("Feb. 15, 2020", "%b. %d, %Y");
    

    在哪里:

    Format description
    %b Abbreviated month name (Jan to Dec)
    %d Day of the month as a numeric value (01 to 31)
    %Y Year as a numeric, 4-digit value

    如果数据始终以以下格式存储:

    month day year
    Feb. 05, 2020
    3 character month abbreviation both 05 or 5 are acceptable 4 digit year (but it seems to work with 2-digit year based on the fiddle below)

    那么上面的STR_TO_DATE()函数就足够了。如果某些月份有完整的月份名称,例如 June. 而不是 Jun.,则 %b 的函数将不适用于该列。

    https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=d70750b6d524f9b4cfa5f8c01169208b

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-04
      • 2012-03-08
      • 2021-08-14
      • 1970-01-01
      相关资源
      最近更新 更多