【问题标题】:Convert a column of varchar dates in mm-dd-yyyy into a column with Date datatype [duplicate]将 mm-dd-yyyy 中的 varchar 日期列转换为 Date 数据类型的列 [重复]
【发布时间】:2020-11-07 16:57:51
【问题描述】:

我在 csv 文件中有一个表格,日期格式为 MM-DD-YYYY。我想将整个表导入mysql。为此,我相信我需要先创建一个表。由于 SQL 无法识别日期格式,我无法导入该表,因此我将该字段创建为 varchar 字段。

现在我已将表导入其中,我想将此 varchar 列转换为可以运行操作的日期列 (YYYY-MM-DD)(例如使用 YEAR() 函数)。有人可以教我怎么做吗?我是 SQL 新手。

谢谢!

【问题讨论】:

标签: mysql sql


【解决方案1】:

如果您“将 CSV 导入 MySQL”,则使用 LOAD DATA INFILE。

如果您的 CSV 包含 MySQL 无法识别的格式的日期列,那么您必须使用 LOAD DATA INFILE 查询的 SET 变体。

CREATE TABLE imported__from_csv ( .. ,
                                  datetime_column DATETIME, 
                                  .. );
LOAD DATA ..
INFILE .. 
INTO TABLE imported__from_csv ( .. , @datetime_variable, .. )
..
SET .. ,
    datetime_column = STR_TO_DATE( @datetime_variable, '%d-%m-%Y'),
    .. ;

即我们将格式不正确的值加载到用户定义的变量中,然后将值转换为正确的日期文字,最后将值保存到表中。

【讨论】:

  • 我可能错了,但我怀疑只是加载它,然后转换它会更快更简单。
  • @Strawberry No. 1) 数据加载期间的这种转换不会影响(更准确地说,差异无法检测到)导入所需的时间。 2) 额外的列需要额外删除 - 这需要额外的时间。
猜你喜欢
  • 2013-10-19
  • 2012-03-05
  • 2016-08-03
  • 2019-01-20
  • 1970-01-01
  • 2016-02-03
  • 1970-01-01
  • 2019-03-04
  • 2023-04-03
相关资源
最近更新 更多