지정된 형식 문자열과 날짜 문자열이 일치하지 않으면 MySQL은 경고와 함께 NULL 값을 출력으로 반환합니다. 다음은 동일한 이해를 위한 예입니다 -
mysql> Select STR_TO_DATE('20172810', '%Y,%d%m'); +------------------------------------+ | STR_TO_DATE('20172810', '%Y,%d%m') | +------------------------------------+ | NULL | +------------------------------------+ 1 row in set, 1 warning (0.00 sec)
형식 문자열에는 %Y 뒤에 쉼표(,)가 있지만 날짜 문자열에는 2017년 이후에는 쉼표가 없기 때문에 위 쿼리는 NULL을 출력으로 반환합니다.
mysql> Show Warnings\G *************************** 1. row *************************** Level: Warning Code: 1411 Message: Incorrect datetime value: '20172810' for function str_to_date 1 row in set (0.00 sec)
마찬가지로 형식 문자열에서 날짜 단위의 순서를 날짜 문자열과 구별하면 MySQL은 위와 동일한 작업을 수행합니다. 이해를 돕기 위해 아래에 예가 나와 있습니다. -
mysql> Select STR_TO_DATE('20172810', '%d%m%Y'); +-----------------------------------+ | STR_TO_DATE('20172810', '%d%m%Y') | +-----------------------------------+ | NULL | +-----------------------------------+ 1 row in set, 1 warning (0.00 sec)
위 쿼리에서 형식 문자열의 단위 순서는 날짜 문자열의 단위 순서에서 변경됩니다.
mysql> Show Warnings\G *************************** 1. row *************************** Level: Warning Code: 1411 Message: Incorrect datetime value: '20172810' for function str_to_date 1 row in set (0.00 sec)