我有一个带有 VARCHAR 字段的 mysql 表,该字段以这种格式存储日期dd/mm/yyyy
。该表中已经存储了数据,我需要按降序对这些数据进行排序。这可能吗?
问问题
688 次
3 回答
4
处理日期的最佳方法是将 then 存储为日期数据类型。
您现在可以轻松地将其中的数据转换为日期列,方法是添加日期数据类型的列,将数据合并到其中,然后重新命名。
alter yourTable add dateColumnName date;
update yourTable set dateColumnName = STR_TO_DATE(oldDateColumn, '%m/%d/%Y');
drop column oldDateColumn;
alter table yourTable change dateColumnName oldDateColumn date;
如果你这样做,你将能够做各种复杂的日期工作(不仅限于很好地对日期进行排序,或者以不同的格式获取数据 - 还包括计算、比较等等)。您需要注意,您可能还必须更改将数据插入列的方式 - 尽管有许多简单的方法可以将字符串日期从 CSV 或表单转换为适当的日期列。
编辑:正如 Martin 指出的那样,如果您现在存储了一些 bum 数据,则在转换为日期时可能会导致问题,但在进行更新时您可以相当容易地找到这些数据。运行更新...查询后,只需运行以下命令:
select count(*) from yourTable where dateColumnName is null; // Total Problem Count
select * from yourTable where dateColumnName is null; // Detail
这将显示未更新的行
于 2012-09-04T07:57:08.973 回答
0
您需要将该字符串值转换为适当的日期以进行排序:
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date
就像是:
ORDER BY STR_TO_DATE(date_column, '%d/%m/%Y') DESC
于 2012-09-04T07:54:59.633 回答
0
你不能用 str_to_date mysql 函数 http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date
未经测试,但应该类似于
select * from table ORDER BY STR_TO_DATE(date,"%e-%c-%Y");
于 2012-09-04T07:55:09.070 回答