8

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

我真的无法更改字段类型,所以请不要说这是我已经知道的不好的方法。我只需要知道这是否可能。

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

4

6 回答 6

25

您可以通过以下方式做到这一点,

SELECT ...
FROM ...
ORDER BY STR_TO_DATE(yourDate,'%d-%m-%Y') DESC
于 2013-06-05T09:26:47.870 回答
4

使用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')
于 2013-06-05T09:26:37.037 回答
1

使用STR_TO_DATE()MySQL 函数:

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

旁注: STR_TO_DATE将字符串转换为日期,同时DATE_FORMAT将日期转换为字符串

于 2013-06-05T09:28:59.657 回答
1

这取决于您在日期字段中存储日期的方式。就我而言,它用“/”分隔,所以我使用 -

...
ORDER BY STR_TO_DATE(report_date, '%m/%d/%Y') DESC;

如果您使用“-”来分隔日期、月份和年份,那么您可以使用 -

...
ORDER BY STR_TO_DATE(report_date, '%m-%d-%Y') DESC;

在此处输入图像描述

于 2020-06-21T09:04:25.337 回答
0
ORDER BY CONCAT(SUBSTR(field, 7, 4), SUBSTR(field, 4, 2), SUBSTR(field, 1, 2)) DESC
于 2013-06-05T09:28:36.600 回答
0

用这个

STR_TO_DATE

   SELECT * FROM table_name ORDER BY  STR_TO_DATE(date_field, '%d-%M-%Y') DESC
于 2013-06-05T09:26:32.177 回答