MySQL ORDER BY Date字段,不是日期格式

问题描述 投票:7回答:5

我有一个字段包含DD / MM / YYYY格式的日期,我需要按此字段对结果DESC进行排序,但是它保存为VARCHAR,我无法更改。有解决方法吗?

我根本没有办法改变字段类型,所以请不要说这是一个不好的方法,因为我已经知道了。我只需要知道它是否可行。

感谢您提前提供的任何帮助和建议。

php mysql
5个回答
17
投票

你可以通过以下方式完成,

SELECT ...
FROM ...
ORDER BY STR_TO_DATE(yourDate,'%d-%m-%Y') DESC

2
投票

使用STR_TO_DATE

http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html#function_str-to-date

...
order by str_to_date(myCol, '%d/%m/%Y')

0
投票

用这个

STR_TO_DATE

   SELECT * FROM table_name ORDER BY  STR_TO_DATE(date_field, '%d-%M-%Y') DESC

0
投票
ORDER BY CONCAT(SUBSTR(field, 7, 4), SUBSTR(field, 4, 2), SUBSTR(field, 1, 2)) DESC

0
投票

使用STR_TO_DATE() MySQL函数:

SELECT * FROM your_table ORDER BY STR_TO_DATE(your_date_column, '%d/%M/%Y') DESC;

旁注:STR_TO_DATE将String转换为Date,而DATE_FORMAT将Date转换为String

© www.soinside.com 2019 - 2024. All rights reserved.