STR_TO_DATE() 함수에 잘못된 문자열 전달 시 결과
MySQL에서 STR_TO_DATE() 함수에 유효하지 않은 문자열을 인수로 전달하면, 함수는 NULL을 반환하고 함께 경고(warning)를 발생시킵니다.
예제
다음 예제를 통해 이를 확인해 보겠습니다.
mysql> Select STR_TO_DATE('20173210', '%Y%d%m');
+-----------------------------------+
| STR_TO_DATE('20173210', '%Y%d%m') |
+-----------------------------------+
| NULL |
+-----------------------------------+
1 row in set, 1 warning (0.00 sec)위 쿼리에서 문자열 값이 유효하지 않은 이유는 일(day) 값이 32로 잘못 지정되었기 때문입니다. 한 달은 최대 31일까지 존재하므로 MySQL은 날짜를 해석할 수 없어 NULL을 반환합니다.
경고 메시지 확인하기
NULL과 함께 반환된 경고 내용은 아래와 같이 SHOW WARNINGS 명령으로 확인할 수 있습니다.
mysql> Show warnings\G
*************************** 1. row ***************************
Level: Warning
Code: 1411
Message: Incorrect datetime value: '20173210' for function str_to_date
1 row in set (0.00 sec)경고 코드 1411은 STR_TO_DATE() 함수에 부정확한 datetime 값이 전달되었음을 의미합니다. 따라서 실무에서는 STR_TO_DATE() 사용 시 입력 문자열이 지정된 형식 지정자(%Y, %d, %m 등)와 정확히 일치하는 유효한 값인지 반드시 검증해야 합니다.