MySQL数据库字段是varchar,而它应该是datetime



我接管了一个网站,最初的开发人员在数据库中以varchar的形式存储日期,而不是日期时间。出生日期等日期字段有多种格式,例如dd/mm/yyyy、mm/dd/yyyy和mmddyyyy等。

我想将此字段迁移到正确的数据类型,但有数百行。迁移田地的最佳方法是什么?php代码很可能也需要更新。

感谢您的反馈。

迁移字段的最佳方法是什么?

可能的方式:

步骤1。添加生成的列,该列将字符串值日期转换为DATE数据类型:

ALTER TABLE tablename
ADD COLUMN dSomeDate DATE AS (STR_TO_DATE(SomeDate, {converting pattern})) STORED;

步骤2。查找从旧列中选择的所有查询(包括函数、过程、触发器、事件等中的查询(,将它们重写为新列的用法并应用。

步骤3。查找所有修改查询并标记它们,将它们重写为新的列用法,但不应用。

步骤4。停止系统。进行完整备份并确保其一致性。

步骤5。更改表,删除生成的列,但添加常规列。根据UPDATE用转换后的值填充它。拆下旧立柱。

步骤6。应用所有重写的数据修改代码。

步骤7。启动系统,确保一切正常。

对每个要更改的列重复此过程。当然,您可以同时将此方法应用于许多列(或所有列(,但这会增加由于没有考虑到某些内容而出现问题的可能性。

最新更新