2016-06-12 4 views
0

날짜 변환 경고 (MySQL이) 무시가 보유 날짜 필드 중 하나를 포함
1 % Y- % M- % D
2 %의 m/% D/% Y
3. 빈 가져 오기위한 문자열, 나 CSV 파일이

내가 사용하는 코드 :

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

그러나이 코드에 대한 모든 %m/%d/%Y 날짜를 경고하고, 각각의 빈 셀에 대한 발생합니다.

날짜가 03/18/20095 인 경우와 같이 데이터가 잘못되었을 때 중요한 경고 만 표시하는 것은 매우 중요합니다.

어떻게 할 수 있습니까?

답변

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 ; 
0

여기서 IFNULL 기능 세부 정보를 읽으십시오. enter link description here. expr1을가 null의 경우 코드

IFNULL(expr1, expr2) 

반환은 expr1이 NULL이 아니면 expr1을하고, expr2이.

날짜 변수가 비어 있지 않으면 위의 코드에서 expr2에서와 같이 형식을 확인하지 않고 그대로 반환되며 비어있는 경우 날짜 형식과 비교하여 확인됩니다.

따라서 빈 문자열에 대한 날짜 형식을 확인하고 동시에 날짜 형식을 확인하지 않고 비어 있지 않은 문자열을 입력하기 때문에 프로그램에서 경고 메시지를 표시합니다.

+0

를? –

관련 문제