如何将MySQL列从VARCHAR更改为date time,并同时转换数据?

如何将MySQL列从VARCHAR更改为date time,并同时转换数据?,mysql,sql,Mysql,Sql,我有一个带有varchar列的大型数据集,其中包含一个不寻常的日期-时间格式 如何既转换6000多行中的数据,又转换列的类型 我可以看出,可以使用以下命令转换类型: ALTER TABLE <tblName> MODIFY <columnName> date time; 按照@Mihai回答 UPDATE rns SET rns.`rns_pub_date` = STR_TO_DATE(rns_pub_date,"%a, %d %b %Y") 根据您的需要调整格式 根

我有一个带有varchar列的大型数据集,其中包含一个不寻常的日期-时间格式

如何既转换6000多行中的数据,又转换列的类型

我可以看出,可以使用以下命令转换类型:

ALTER TABLE <tblName> MODIFY <columnName> date time;
按照@Mihai回答

UPDATE rns
SET rns.`rns_pub_date` = STR_TO_DATE(rns_pub_date,"%a, %d %b %Y")
根据您的需要调整格式


根据您的需要调整格式。

您不会一次完成所有操作。你一个接一个地采取这些步骤

  • 添加新列
  • 从旧列更新新列。这可能需要多个查询,具体取决于varchar列中有多少种格式
  • 放下你的旧专栏
  • 重命名新列

  • 你不能一次做完所有的事。你一个接一个地采取这些步骤

  • 添加新列
  • 从旧列更新新列。这可能需要多个查询,具体取决于varchar列中有多少种格式
  • 放下你的旧专栏
  • 重命名新列

  • 这是
    datetime
    不是
    datetime
    你能澄清一下不寻常的日期时间格式是什么样子吗?另请参见:它是
    日期时间
    而不是
    日期时间
    您能否澄清不寻常的日期时间格式是什么样的?另见:
    UPDATE rns
    SET rns.`rns_pub_date` = STR_TO_DATE(rns_pub_date,"%a, %d %b %Y")
    
    UPDATE `table`
    SET `column` = STR_TO_DATE(`column`,'%Y-%m-%d')