MySQL:使用DATE FORMAT %d-%m-%y TO %y-%m-%d更新表值

nfeuvbwi  于 2023-03-28  发布在  Mysql
关注(0)|答案(3)|浏览(161)

在数据库导入过程中,我有点搞砸了。所以现在我有一个DATE类型的日期列,但是年份和日期在错误的位置:这一天最终出现在年份列中,MySQL将其自动格式化为年份,进一步恶化了事情。
我在下表中列出了值:

dates(dddd-mm-yy)
2030-05-12
2021-06-13
2012-12-13

我想要他们这样:

dates(yyyy-mm-dd)
2012-05-30
2013-06-21
2013-12-12

请注意,我实际上是想UPDATE列,我已经看到并尝试了许多关于SELECT的例子。
先谢了。

nimxete2

nimxete21#

你可以使用substring()和concat()来concat任何你想要的东西。下面是供你参考的语句(表是tb_test,列名是col_date)。

update tb_test set col_date = concat('20',substring(col_date,7,2),'-',substring(col_date,4,2),'-',substring(col_date,1,2));
mjqavswn

mjqavswn2#

我不知道这是否可以归类为“解决方案”,也许更多的是一种变通,但它对我来说完美无瑕。
在阅读this之后,我意识到当我试图以dd-mm-yy格式导入日期时,我的问题开始了,因此Mysql假设我的日期是年,并将我的日期显示为yydd-mm-yy
我的日期被格式化为yydd-mm-yy,我已经分别尝试了查询

UPDATE table_name
SET DATES =  DATE_FORMAT(DATES, '%Y-%m-%d');

这个查询运行了,但是没有对表进行任何更改,因为在Mysql的眼里,它帮助我将日期的格式设置为yyyy-mm-dd,从我导入数据库的时候开始,但是我的日期仍然是yydd-mm-dd
所以我想,如果我尝试一个查询像;

UPDATE table_name
SET DATES =  DATE_FORMAT(DATES, '%d-%m-%y');

这样Mysql就切换了日期和年份,然后以yyyy-mm-dd的形式提供我的日期,这与Mysql处理日期的方式相当令人困惑,但像2030-05-12这样的日期的最终结果是2012-05-30。

kiz8lqtg

kiz8lqtg3#

我尝试使用所有查询来转换数据格式并修改表。我尝试的所有查询都不起作用。我以这种方式解决这个问题。之后,您可以删除最后一个表。

CREATE TABLE table2
    SELECT column1,column2 ecc
           DATE_FORMAT(date, '%d/%m/%Y') AS alias_Name
    FROM table;

这可以解决所有查询都不起作用的问题。我尝试使用它,但给我错误:

UPDATE  table SET date = DATE_FORMAT(date, '%d/%m/%Y');

但给予我这个错误:错误代码:1292日期值不正确

相关问题