STR_TO_DATE(str, format)
STR_TO_DATE() 함수는 첫 번째 매개변수인 문자열 str을 두 번째 매개변수인 format에 맞게 날짜나 시간으로 반환합니다. 여기서 사용하는 format은 표 6-7에 나온 식별자를 그대로 사용합니다. 만약 str에 문자열로 명시한 날짜나 시간을 변환하는 데 실패하면 NULL을 반환합니다. 참고로 MySQL의 기본 날짜 형식은 YYYY-MM-DD입니다.
코드 6-32
SELECT STR_TO_DATE('21,01,2021', '%d,%m,%Y') CONV1,
STR_TO_DATE('19:30:17', '%H:%i:%s') CONV2,
STR_TO_DATE('19:30:17', '%h:%i:%s') CONV3;
실행결과
첫 번째 SRT_TO_DATE() 함수에서는 첫 번째 매개변수로 ‘21,01,2021’을 입력했습니다. 즉, 21일 1월 2021년을 뜻하죠. 두 번째 매개변수인 ‘%d,%m,%Y’는 각각 일, 월, 연을 뜻합니다. 따라서 실행결과로 2021-01-21을 반환했습니다. 두 번째 함수에서는 ‘19:30:17’ 문자열을 시:분:초 형태로 변환해 19:30:17을 반환했습니다.
마지막 함수는 NULL을 반환했는데, 이는 변환 작업에 실패했다는 뜻입니다. 왜 실패했을까요? 원인은 두 번째 매개변수에서 시간을 의미하는 식별자인 %h 때문입니다. ‘19:30:17’에서 시간이 19시로 24시간 형태인데, %h는 12시간 형태이므로 변환에 실패해 결국 NULL을 반환한 것이죠.