【问题标题】:Incorrect Date Value while loading CSV file to Table将 CSV 文件加载到表时日期值不正确
【发布时间】:2019-02-06 06:57:11
【问题描述】:

我正在尝试将数据填充到 Mysql 中 B_Date 设置为 DATE 的 Employee 表中。但是得到这个错误 -

行导入失败并出现错误:(“日期值不正确:第 1 行的列 'B_DATE' 的日期值不正确:'05/06/1985'”,1292)

那么如何将特定表或列的格式更改为 DD-MM-YYYY?

我已经试过了 -

从员工中选择 DATE_FORMAT(B_DATE, '%d-%m-%y');

加载数据时仍然报同样的错误。

【问题讨论】:

  • 你是如何加载 csv 文件的?使用加载数据 infile 或 mysqlwrokbench 导入向导?
  • 通过导入向导。
  • 您可以在(临时)文本列中导入日期。然后使用 UPDATE 命令使用 str_to_date 填充文本列中的日期列。
  • 如果 mysqlworkbench 导入向导不允许您转换数据,那么您可以按照@Salman A 的建议进行操作,将文本加载到临时文件中,然后从那里插入到您的永久表中,或者放弃向导并使用 load允许转换的数据 infile 这里是一个例子stackoverflow.com/questions/8163079/….

标签: mysql mysql-workbench


【解决方案1】:

由于MySql在日期类型列中接受y-m-d格式的日期,所以需要通过STR_TO_DATE函数将日期转换为yyyy-mm-dd格式以便插入:

INSERT INTO table_name(today) 
VALUES(STR_TO_DATE('07-25-2012','%m-%d-%y')); 

类似的,如果你想选择除Mysql格式以外的其他格式的日期,你应该尝试DATE_FORMAT函数

SELECT DATE_FORMAT(today, '%m-%d-%y') from table_name;

编辑:

为了改变列以接受你格式的数据,

mysql_query("UPDATE `Table` SET `date` = STR_TO_DATE(`date`, '%d-%m-%Y')");
mysql_query("ALTER TABLE `Table` CHANGE COLUMN `date` `date` DATE");

【讨论】:

  • 我是 SQL 新手,所以我可能错了,但是当我们将数据一一插入或手动插入时,可以使用您提供的解决方案。如何将它用于超过 100 行或更多行的表或 CSV 文件中的数据?
  • @ChetanThapliyal 我已经对答案进行了编辑。请检查它是否符合目的。
  • @Bhushan Shinde 我在您的代码中看不到任何从 csv 文件加载的内容。
  • 所以我尽我所能尝试了一切,最后我最终使用了 UPDATE 和 ALTER 命令。感谢@BhushanShinde,感谢 P.Salmon。
【解决方案2】:

摩萨德的最后一个建议有效,这里解释了如何:

将表单字符串的日期从 csv 文件插入 mysql 表。您也可以在 mysql 工作台中运行以下命令。

step1:将表格日期列类型转换为 varchar() 并导入文件。

step2:使用 str_to_date 函数更新日期列的所有值。

更新Table SET date = STR_TO_DATE(date, '%d-%m-%Y')

第 3 步:将日期列数据类型重置回 DATE。

更改表Table更改列datedate日期

【讨论】:

    猜你喜欢
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 2021-06-23
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多