忽略日期转换警告(MySQL)

时间:2016-06-12 20:36:33

标签: mysql sql date

我有CSV文件,包含日期字段,其中包含:
1.%Y-%m-%d
2.%m /%d /%Y
3.空字符串

我用于导入的代码:

LOAD DATA INFILE ...
SET EpStartDate = IFNULL (DATE(@v_EpStartDate), STR_TO_DATE(@v_EpStartDate, '%m/%d/%Y')),
...

但是这段代码会抛出关于每个%m/%d/%Y日期和每个空单元格的警告。

当数据错误时,仅显示关键警告对我来说非常重要,例如日期为03/18/20095

知道怎么做吗?

2 个答案:

答案 0 :(得分:0)

在此处阅读IFNULL功能详细信息。enter link description here。代码

IFNULL(expr1, expr2)
如果expr1为非null,则

返回expr1;如果expr1为空,则返回expr2。

因此,当日期变量不为空时,它将按原样返回(不检查格式,如上面代码中的expr2中所做的那样),当它为空时,将根据日期格式进行检查。 / p>

因此,您的程序会向您发出警告,因为您正在检查空字符串上的日期格式,同时输入非空字符串而不检查其日期格式。

答案 1 :(得分:0)

可以使用自定义功能:

DROP FUNCTION IF EXISTS PARSE_DATE;
DELIMITER //
CREATE FUNCTION PARSE_DATE ( str VARCHAR(255) ) RETURNS DATE
BEGIN
    IF str in ('',' ','.') THEN RETURN null;
    ELSEIF str like '__/__/____' THEN RETURN STR_TO_DATE(str, '%m/%d/%Y');
    ELSEIF str like '__-__-____' THEN RETURN STR_TO_DATE(str, '%m-%d-%Y');
    ELSE RETURN DATE(str); /*may throw a warning*/
    END IF;
END//
DELIMITER ;