0

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

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

4 回答 4

2

这是最终的解决方案

select *,completiondate from projects order by str_to_date(completiondate,'%d/%m/%Y %H:%i') desc
于 2012-05-29T10:45:20.883 回答
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
于 2012-05-29T10:17:49.407 回答
1

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

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

谢谢!

于 2013-04-02T19:22:03.720 回答
0
SELECT * FROM projects WHERE countries = 1 order by cdate desc

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

于 2012-05-29T10:14:24.697 回答