我有一种不可避免的情况,即日期以英国日期格式存储,例如:
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
答案 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