我正在使用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 ||日期
因此,当在DB中加载完整文件时,我将日期存储为 varchar ,因为当我将它们存储在 DATE 数据类型中时我得到了。
现在插入数据后我必须处理日期,但我无法获取已排序的日期,因为它们存储为 Varchar 。 有没有什么办法可以在创建表时指定默认的dateformat。例如:
create table test (
mydates date(date : dd-mm-yyyy));
像这样的东西。
或者有人可以建议采用不同的方法来解决这个问题吗?
答案 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')