日期从 yyyy-mm-dd 转换为 yyyy-mm-dd 将年转换为日

date convert from yyyy-mm-dd to yyy-mm-dd converting year to day

我已将数据从旧数据库迁移到新数据库,其中日期设为 varchar,我已成功迁移数据,但日期出现问题。在旧数据库中,日期格式为 25-01-02,其中 25 是日 01 是月,02 是年。但是我的脚本将它转换为 2025-01-02。如何在我的 SQL 中修复它?

TEST case:
DATE                  OUTPUT
2025-05-01            2001-05-25
2002-08-16            2016-08-02
2031-01-01            2001-01-31
2028-08-16            2016-08-28
2001-05-01            2001-05-01

您可以像这样使用 STR_TO_DATE 轻松转换:

SELECT STR_TO_DATE('25-01-02', '%d-%m-%y');

样本

mysql> SELECT STR_TO_DATE('25-01-02', '%d-%m-%y');
+-------------------------------------+
| STR_TO_DATE('25-01-02', '%d-%m-%y') |
+-------------------------------------+
| 2002-01-25                          |
+-------------------------------------+
1 row in set (0,00 sec)

mysql>

参见手册:https://mariadb.com/kb/en/mariadb/str_to_date/