2017-10-19 10 views
2

유효한 날짜 형식이 아닌 VARCHARs 문자열을 VARCHAR로 저장되는 다른 테이블에 삽입하려고합니다. 나는 문자열의 형식이 유효하지 않은 경우 NULL을 반환하도록되어있는이를 달성하기 위해 STR_TO_DATE를 사용하려고 해요 : Error Code: 1411. Incorrect datetime value: 'some random string that isnt a date' for function str_to_date : 잘못된 날짜 형식 문자열에서 오류가 발생MySQL WHERE STR_TO_DATE IS NULL을 삽입 할 수 없습니다.

INSERT INTO DateErrors 
    SELECT `row_id`,`date_string` 
    FROM `source_table` 
    WHERE STR_TO_DATE(`date_string`,'%d-%m-%Y') IS NULL 

합니다. 이 오류를 던지는 대신 DateErrors에 삽입 된 문자열 값을 원합니다.

그러나 SELECT 쿼리 만 실행하면 date_string이 잘못된 행을 반환하며 오류는 발생하지 않습니다.

+0

왜해야 하는가? null 값을 찾는 경우에는 형식을 지정할 필요가 없습니다. – PaulProgrammer

+0

@PaulProgrammer 무효 날짜가'NULL'을 반환한다고 가정하고 있지만 실제로는 '00-00-0000'으로 표시 될 수 있습니다. – tadman

+0

처음에는이 문제를 피하기 위해 날짜를 저장하는 데'DATE' 열과 * DREE 열만 사용하는 것이 좋습니다. 이상적인 형식은'YYYY-MM-DD' 또는 ISO-8601 형식입니다. 다른 모든 것들은 모호함을 야기합니다. – tadman

답변

2

대신 STR_TO_DATE

STR_TO_DATE(`date_string`,'%d-%m-%Y') 

에 날짜 문자열에 대한 잘못된 형식을 지정하는, 그것은`NULL` DATE_STRING WHERE를 그냥

STR_TO_DATE(`date_string`,'%Y-%m-%d') 
+0

'date_string '이'% d- % m- % Y '형식과 일치하지 않는'DateErrors'에'source_table'의 행을 삽입하고 싶습니다. – Steven

+0

@Steven 확실하지 않습니다. 무엇을 묻고 있습니까? 문제 해결을위한 해결책을 제시했습니다. 문제를 이해하려면 몇 가지 데이터를 보여줘야합니다. – Ravi

관련 문제