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个字符。 2013年6月28日-Title_of_file因此我抓取了该子字符串并将其设置为filedate,并使用WHERE LIKE进行过滤
然后我尝试使用date_format按日期排序,但是当我运行查询时,排序不正确。
我必须将其转换为日期格式吗?如果是这样,那我该如何在SQL中执行此操作?
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
对象。
您应该只按文件日期排序。 不管日期的格式还是相同的日期和时间。 DATE_FORMAT
返回格式化日期,而不是列。