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 个字符中的日期,例如。06.28.2013-Title_of_file 所以我抓取子字符串并将其设置为文件日期,使用 WHERE LIKE 过滤

然后我尝试使用 date_format 按日期排序,但是当我运行查询时,它没有正确排序。

我必须将其转换为日期格式吗?如果是这样,那么我该如何在 SQL 中做到这一点?

4

2 回答 2

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对象。

于 2013-07-10T22:00:48.260 回答
0

您应该按文件日期订购。无论日期的格式如何,它仍然是相同的日期和时间DATE_FORMAT返回格式化的日期而不是列。

于 2013-07-10T21:58:50.143 回答