【问题标题】:Create table with default dateformat?使用默认日期格式创建表?
【发布时间】:2015-12-29 04:39:25
【问题描述】:

我正在使用 Load 命令将 CSV 文件中的所有数据插入到 mysql 表中。负载查询示例为:

LOAD DATA LOCAL INFILE 'C:\\path\\to\\windows\\file.CSV'
INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(field1, field2, field3, fieldx);

文件中的数据格式如下:

F名称||姓名 ||数字1 ||数字2 ||数字3||数字4 ||数字5 ||日期

  • 这里所有的 num 都是 Float 数据类型。
  • 这里csv文件中日期的日期格式为dd-MM-yyyy。

因此,当在 DB 中加载完整文件时,我将日期存储为 varchar,因为当我将它们存储在 DATE 数据类型中时,我得到 0000-00-00。

现在插入数据后,我必须处理日期,但我无法获取已排序的日期,因为它们存储为 Varchar。 有什么方法可以在创建表时指定默认日期格式。例如:

create table test (
mydates date(date : dd-mm-yyyy));

类似的东西。

或者有人可以提出不同的方法来解决这个问题吗?

【问题讨论】:

    标签: mysql sql date import-from-csv


    【解决方案1】:

    使用str_to_date 将字符串转换为日期时间对象,并使用set 手动设置列的值。假设fieldx 是您的日期字段:

    LOAD DATA LOCAL INFILE 'C:\\path\\to\\windows\\file.CSV'
    INTO TABLE table_name
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n'
    (field1, field2, field3, @fieldx)
    SET fieldx = str_to_date(@fieldx, "%d-%m-%Y");
    

    查看manual page for load data 了解更多信息;并使用this table调整格式字符串。

    【讨论】:

    • 我正在使用 str_to_date 方法并且数据已成功插入,但日期列数据为 NULL。感谢手册页,我正在阅读它以了解更多详细信息。
    • 来自文件的日期是 10-APR-2008,我正在使用 "%d-%m-%Y" 将其转换为 sql 日期。
    • 查看格式表here;并修复格式字符串。
    • 啊...我不知道日期格式需要与原始日期相同的字符串 (%b)。我以为mysql会自动转换它。谢谢@Burhan Khalid。你的解决方案就像一个魅力。
    【解决方案2】:

    我建议使用“字符串到日期”功能

    STR_TO_DATE(table.datestring, '%m-%d-%Y')
    

    【讨论】:

      猜你喜欢
      • 2018-02-12
      • 1970-01-01
      • 1970-01-01
      • 2019-03-13
      • 2016-01-25
      • 1970-01-01
      • 2011-06-16
      • 2018-05-12
      • 2022-07-22
      相关资源
      最近更新 更多