Mysql排序日期格式

时间:2012-05-29 10:12:37

标签: mysql sql sorting datetime

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

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

4 个答案:

答案 0 :(得分:2)

这是最终解决方案

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

答案 1 :(得分:1)

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

-- 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

答案 2 :(得分:1)

吉姆,你的最终解决方案对我来说是一个巨大的帮助。我的日期是02/28/2013格式。我用了代码:

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

谢谢!

答案 3 :(得分:0)

SELECT * FROM projects WHERE countries = 1 order by cdate desc

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