날짜와 시간 구분자로 다른 문자를 사용한 경우의 MySQL 동작
MySQL에서 TIMESTAMP() 함수를 사용할 때, 날짜 부분과 시간 부분 사이에는 일반적으로 'T' 또는 공백(' ')이 구분자로 사용됩니다. 그런데 만약 이 자리에 'T'나 공백이 아닌 다른 문자를 사용하면 어떻게 될까요?
이 경우 MySQL은 날짜 부분은 정확하게 인식하여 반환하지만, 시간 부분은 모두 0으로 채워서 반환합니다. 즉, 시간 정보는 무시되고 '00:00:00'이 반환됩니다.
예제
아래 예제에서는 날짜와 시간 사이에 'T' 또는 공백 대신 문자 'W'를 사용했습니다.
mysql> Select TIMESTAMP('2017-10-20W06:10:36');
+----------------------------------+
| TIMESTAMP('2017-10-20W06:10:36') |
+----------------------------------+
| 2017-10-20 00:00:00 |
+----------------------------------+
1 row in set, 1 warning (0.00 sec)결과 분석
실행 결과를 보면 다음과 같은 특징을 확인할 수 있습니다.
- 날짜 부분(2017-10-20)은 정상적으로 인식되어 그대로 반환됩니다.
- 시간 부분(06:10:36)은 인식되지 못하고 00:00:00으로 반환됩니다.
- 쿼리 실행 시 1개의 경고(warning)가 발생하는데,
SHOW WARNINGS;명령으로 확인해 보면 잘못된 형식의 값이 잘렸다(truncated)는 메시지를 볼 수 있습니다.
따라서 날짜와 시간을 함께 다룰 때는 반드시 표준 구분자인 'T' 또는 공백을 사용해야 의도한 시간 값까지 정확하게 얻을 수 있습니다.