【问题标题】:Mysql sort date formatMysql排序日期格式
【发布时间】:2023-03-13 05:31:02
【问题描述】:

我有一个不可避免的情况,日期以英国日期格式存储,例如:

31/12/2001  00:00:00

我需要它按降序排列,我试过了,但它出错了

select *, DATE_FORMAT(completiondate,'\%e/%c/%Y\') as cdate 
from projects 
where countries = 1 
order by cdate desc

错误:

查看与您的 MySQL 服务器版本相对应的手册 在 '' order by cdate desc' 附近使用的正确语法

我使用的是 MySQL 4.1.9

【问题讨论】:

  • 没有order by 子句是否有效?

标签: mysql sql sorting datetime


【解决方案1】:

这是最终的解决方案

select *,completiondate from projects order by str_to_date(completiondate,'%d/%m/%Y %H:%i') desc

【讨论】:

    【解决方案2】:

    您不必要地转义了% 字符。但实际的问题是您的查询中有一个未终止的字符串文字:

    -- this does not terminate the string ----------v
    select *, DATE_FORMAT(completiondate,'\%e/%c/%Y\') as cdate
    from projects
    where countries = 1
    order by cdate desc
    

    改为:

    SELECT *, DATE_FORMAT(completiondate,'%e/%c/%Y') AS cdate
    FROM projects
    WHERE countries = 1
    ORDER BY cdate DESC
    

    【讨论】:

      【解决方案3】:

      吉姆,您的最终解决方案对我帮助很大。我的日期是 02/28/2013 格式。我使用了代码:

      SELECT *,str_to_date(SaleDate,'%m/%d/%Y') AS cdate FROM mytable ORDER BY cdate DESC
      

      谢谢!

      【讨论】:

        【解决方案4】:
        SELECT * FROM projects WHERE countries = 1 order by cdate desc
        

        我猜你的数据库中已经有 cdate 了?如果是这样,您不需要设置“date_format”,因为它已经存在。 但我可能错了,因为我从未使用过 4.1.9

        【讨论】:

        • OP 需要转换日期,因为该列是 (var)char 而不是日期时间
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-12
        • 2017-12-17
        • 2011-10-20
        • 2011-07-19
        • 2013-12-24
        • 2011-09-22
        相关资源
        最近更新 更多