php - 排序由 mysql 中的日期组成的 VARCHAR 字段

标签 php mysql

我有一个带有 VARCHAR 字段的 mysql 表,该字段以 dd/mm/yyyy 格式存储日期。该表中已经存储了数据,我需要按降序对这些数据进行排序。这可能吗?

最佳答案

处理日期的最佳方法是将 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 指出的那样,如果您现在在其中存储了一些流浪数据,则在转换为日期时可能会出现问题,但您可以在进行更新时相当轻松地找到这些数据。 update... 查询运行后,只需运行以下命令:

select count(*) from yourTable where dateColumnName is null; // Total Problem Count
select * from yourTable where dateColumnName is null; // Detail

这将显示未更新的行

关于php - 排序由 mysql 中的日期组成的 VARCHAR 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12259007/

相关文章:

php - 处理两个不同数据库时,在 Code Igniter 中正确设置 mysql pconnect

php - 如何在 laravel 5.1 中获取更新的字段总数?

php - Mysql选择所有相差10分钟的行

mysql - 导出mysql数据库的表以插入到不同的数据库中

MySQL聚合列不同条件查询永远不会结束

PHP strtotime 结果在 php7.3.2 和 php7.3.1 中不同

PHP代码问题?

java - 连接池上的 MySql 连接无法恢复

php - 按序数计算每个房间的夜晚

php - body 错误中的空行数据包,图像结果集很大