使用默认的dateformat创建表?

时间:2015-12-29 04:39:25

标签: mysql sql date import-from-csv

我正在使用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);

文件中的数据格式如下:

  

FName || LName || num1 || num2 || NUM3 || num4 || num5 ||日期

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

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

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

create table test (
mydates date(date : dd-mm-yyyy));
像这样的东西。

或者有人可以建议采用不同的方法来解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

使用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调整格式字符串。

答案 1 :(得分:1)

我建议使用“string to date”功能

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