2012-04-12 10 views
0

내 데이터베이스로 가져 오는 테이블 (csv)에있는 열에서 varchar 값을 변환하려고합니다. 이제는 날짜가 csv 파일에있을 수있는 형식에 대한 정보가 없습니다. 열에있는 모든 값을 검사하고 유효한 경우 해당 열을 mysql의 DATE 데이터 유형으로 변환해야합니다. 문제는 str_to_date를 사용하고 날짜가 다른 형식 인 경우 저장 프로 시저가 오류를 발생시키고 실행을 중지하는 것입니다. 저장 프로 시저가 반복을 완료 할 수 있도록 해당 오류를 무시하는 방법이 필요합니다.str_to_date를 사용하여 varchar를 날짜로 변환

콘텐츠가 유효한 날짜인지 확인하기 위해 결과 값을 사용할 계획입니까? 더 좋은 방법이 있습니까? 원본 데이터의 날짜 형식에 관한 정보는 갖고 있지 않습니다.

예 : '11 -Apr-2011 ','20110102 ', '01 -05-2011'등일 수 있습니다. 지원해야 할 4-5 형식이 있습니다. 감사합니다. .

+0

01-05-2011 : 5 월 1 일 또는 1 월 5 일 첫 번째 메시지입니까? – Spudley

+0

5 월 1 일부터 mm-dd-yyyy 형식을 고려하지 않을 것입니다. 하지만 기본적으로 "올바르지 않은 datetime 값"오류가 발생하면 mysql 저장 프로 시저가 중지되지 않도록하려면 해킹이 필요합니다. 오류/null 결과를 직접 처리하고 있습니다. 반복을 완료하려면 mysql 만 필요합니다. – AsG

답변

0

사전에 날짜의 형식을 알 수 없기 때문에, 모든처럼 preg_match를 사용하여 처리 할 수 ​​있습니다 : 당신은 여러 사례를 만들지 않고 알 수없는 경우를 처리 할 방법을 모르는

$regex = '<matches for dates>'; 
if (preg_match($regex, $stringToCheck)) { 
    str_to_date($stringToCheck); 
} else { 
} 

을 그들. PHP는 형식이 mm/dd/yy 대 dd/mm/yy인지 어떻게 알 수 있습니까?

+0

안녕하세요, 빠른 답장을 보내 주셔서 감사합니다. 사실 내 응용 프로그램에서 자바와 MySQL을 사용하고 있습니다. Unlyckily PHP가 관련되어 있지 않습니다 :(mysql에서 preg_match에 대한 대안이 있습니까? – AsG

+0

Silly Stack, PHP 필터가 있습니다 :(각 특정 날짜 패턴을 지정해야하지만 패턴 일치 기능이있는 "LIKE"를 사용할 수 있습니다. . http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html – citizenen

+0

좋아, 나는 그것을 시도 할 것이다 .BTw 당신은 MySQL의 REGEXP이 경우에 도움이 될 것이라고 생각합니까? – AsG

관련 문제