首页 > 解决方案 > 替换字符顺序 MySQL 字段

问题描述

我有一个 mysql 列“datepicker”,我一直以这种格式“m/d/Y”存储日期,现在我想将现有数据更改为“dmY”。是否有一个 UPDATE 命令可以快速查找所有匹配项,而无需为每个日期创建查询?

样本:

UPDATE `signup` SET `datepicker` = '18-12-2020' WHERE `datepicker` = '12/18/2020';

谢谢

标签: mysqldatedatetimedatepickerformat

解决方案


这确实是一个很好的举措。您正在将数据从非标准格式转换为 ISO8601 标准。如果将列的数据类型更改为DATE. 但首先要做到这一点。

您可以使用MySQL 的日期处理功能来做您需要的事情。

从这个开始。它应该以您要离开的格式找到您的日期,并以 dbms 的规范日期格式显示它们。这是为了测试,因为 UPDATE 是破坏性的,你要确保它是正确的。

SELECT DATE(STR_TO_DATE(datepicker, '%c/%d/%Y')) new_datepicker, datepicker
  FROM signup
 WHERE datepicker RLIKE '^[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}$';

当你确定你在这里得到你想要的东西时,你可以这样做。

UPDATE signup
   SET datepicker = DATE(STR_TO_DATE(datepicker, '%c/%d/%Y'))
 WHERE datepicker RLIKE '^[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}$';

现在您的datepicker列中应该有正确的字符串格式。


推荐阅读