在文件中使用mysql加载数据格式化csv日期列

在文件中使用mysql加载数据格式化csv日期列,mysql,csv,date-format,date-formatting,Mysql,Csv,Date Format,Date Formatting,我使用文件查询中的加载数据将csv插入表中。我必须在csv中设置日期列的格式 LOAD DATA INFILE '/invoices/invoice1381301986.csv' INTO TABLE invoice_table FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' (`code`,@var1) set datefield=STR_TO_DATE(@var1, '%m/%d/%Y'); 我可以使用上

我使用文件查询中的加载数据将csv插入表中。我必须在csv中设置日期列的格式

LOAD DATA INFILE '/invoices/invoice1381301986.csv' INTO TABLE invoice_table FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' (`code`,@var1)  set datefield=STR_TO_DATE(@var1, '%m/%d/%Y');
我可以使用上面的查询设置日期的格式

但问题是,我对csv日期列有不同的格式。可能的格式有“m/d/Y”、“m-d-Y”、“m/d/Y”、“m-d-Y”、“Y-m-d”、“Y/m/d”

所以我的查询应该根据csv的日期格式,这样我就可以修改我的查询,比如

datefield=STR\u TO\u DATE(@var1,'%m/%d/%Y')

datefield=STR\u TO\u DATE(@var1,%m-%d-%Y')


如何读取csv日期字段的格式?

您需要使用
案例:

LOAD DATA INFILE '/invoices/invoice1381301986.csv' 
    INTO TABLE invoice_table 
    FIELDS TERMINATED BY ',' 
    ENCLOSED BY '"' 
    LINES TERMINATED BY '\n' 
    (`code`,@var1)  
    SET datefield= (
        CASE
            WHEN @var1 REGEXP '[0-9]{2}/[0-9]{2}/[0-9]{4}' THEN STR_TO_DATE(@var1,'%m/%d/%Y')
            ...
        END
    )