2012-05-29 2 views
0

У меня есть неизбежная ситуация, когда даты сохраняются в формате дата в Великобритании, например:Mysql дата сортировки Формат

31/12/2001 00:00:00 

Мне нужно это в порядке убывания, я попытался это, но это ошибки

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

Ошибка:

check the manual that corresponds to your MySQL server version for the the right syntax to use near '' order by cdate desc'

Я использую MySQL 4.1.9

+0

Работает ли это без предложения 'order by'? –

ответ

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

косые черты вызвали ошибку спасибо –

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

Я предполагаю, что у вас есть cdate уже в вашей базе данных? Если это так, вам не нужно устанавливать «date_format», поскольку он уже существует. Но я могу ошибаться, так как я никогда не использовал 4.1.9

+1

OP необходимо преобразовать дату, потому что столбец является символом (var) вместо datetime –

+0

вот он, спасибо –

2

Это был конец решение

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

Джим, ваше конечное решение было огромной помощью для меня. Мои даты в формате 02/28/2013. Я использовал код:

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

Спасибо!

Смежные вопросы