2013-07-10 3 views
0
SELECT SUBSTR(`filename`, 1, 10) as filedate, `filename`, `filepath` 
FROM `files` 
WHERE `filepath` LIKE 'sites/default/files/news/%' 
ORDER BY DATE_FORMAT(filedate,'%m.%d.%Y') ASC 

имя файла включает в себя дату в первых 10 символах ex. 06.28.2013-Title_of_file , поэтому я беру подстроку и устанавливаю ее как filedate, фильтрую с WHERE LIKEпо DATE_FORMAT не работает должным образом

затем я пытаюсь выполнить заказ по дате, используя date_format, но когда я запускаю запрос, он не упорядочивает правильно.

Должен ли я преобразовать его в формат даты? если да, то как это сделать в SQL?

Заранее спасибо

+0

Можете ли вы показать больше своих строк образцов. У вас есть столбец типа даты или префикс имени файла, который у вас есть? –

ответ

2
SELECT STR_TO_DATE(SUBSTR(`filename`, 1, 10),'%m.%d.%Y') as filedate, `filename`, `filepath` 
FROM `files` 
WHERE `filepath` LIKE 'sites/default/files/news/%' 
ORDER BY filedate ASC 

Это преобразует разделенную строку в объект DATE.

+0

Именно то, что я искал. Спасибо. –

0

Вы должны просто упорядочить по FILEDATE. Независимо от формата даты, он все равно совпадает с датой и временем. DATE_FORMAT возвращает форматированную дату, а не столбец.

+0

- 'filedate' - производное поле. –

+0

Вы можете заказать производные поля. Хотя, если бы я заметил, я бы сделал то, что сделал ДевлшОн. – Legion

+0

Вам не хватает точки. 'fielddate' не является столбцом даты, как вы предполагали, и поэтому' DATE_FORMAT() 'ничего не делает. –

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

  • Нет связанных вопросов^_^