2010-12-08 5 views
0

여러 날짜 형식을 가진 varchar 날짜를 표준 DateTime 형식으로 변환하려고합니다. 그래서 두 날짜 사이의 날짜를 비교할 수 있습니다. 내가 옳은 길에 있다고 생각하는 SQL 문을 썼지 만 실수를 찾기에는 SQL을 너무 적게 알고 있습니다. 내 현재 코드 오류가 있습니다.MySQL : 여러 varchar 형식을 DateTime으로 변환

DELIMITER // 

    CREATE FUNCTION CUSTOM_DATE_CONVERT (d VARCHAR(50)) 
     RETURNS DATETIME 

     BEGIN 
     DECLARE date DATETIME; 

     IF STR_TO_DATE 

(d, "%Y-%m-%d %H:%i:%s") IS NOT NULL THEN SET date = STR_TO_DATE(d, "%Y-%m-%d %H:%i:%s"); 
    ELSE 
     IF STR_TO_DATE(d, "%H:%i:%s %b %d, %Y") IS NOT NULL THEN SET date = STR_TO_DATE(d, "%H:%i:%s %b %d, %Y"); 
      END IF; 
     RETURN date; 
     END// 

    DELIMITER ; 

    SELECT id, CUSTOM_DATE_CONVERT(payment_date) FROM `paypal_table` 

는 나의 오류는 다음과 같습니다 : 여기가 무슨

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 12 

나는 바른 길에 있습니까? 어떤 도움이라도 대단히 감사합니다.

+0

example를 참조 당신이 세미콜론에서 뭔가 다른 '구분자를 설정나요 포함하는 것을 잊지 보인다? – rik

+0

나는 그것을 붙잡아 주셔서 감사하지 않았습니다. DELIMITER를 설정 한 후 코드와 오류를 업데이트했습니다. – Cosmin

+0

첫 번째 if 문까지 좁혔습니다. – Cosmin

답변

0

그것은 당신이 ENDIF

IF STR_TO_DATE ... THEN SET date = STR_TO_DATE(d, "%Y-%m-%d %H:%i:%s"); 
ELSE 
    IF ...THEN SET date = STR_TO_DATE(d, "%H:%i:%s %b %d, %Y"); 
    END IF; /* close second if */ 
END IF;  /* close first if */ 

관련 문제