MySQL, 날짜 형식이 내 마음대로 변경 안 된다면..? | CAST함수

shimshim 2024. 9. 1. 23:37

 

데이터를 살펴보다 보면 데이터 형식을 원하는 모습으로 맞춰야 될 때가 자주 있다.

특히 날짜..! 데이터 형식 변경 작업에 있어 그 어떤 형식보다도 더 자주 작업을 해 줘야 하는데,

특정 날짜 컬럼에서 yyyy-mm-dd 뿐만 아니라 hh-mm-ss 내용까지 함께 반영 될 때가 있기 때문이다.

 

yyyy-mm-dd hh-mm-ss 형식은 초단위까지 표현하는 좀 더 정확한(?) 기입이 필요할 때 쓰이는 시간 표현 방식이다. 

하지만 적어도 나의 실무 환경에선 시/분/초 단위까지 확인해야 될 일은 거의(전혀) 없고 연/월/일 까지만 파악하면 되므로, 해당 데이터 형식을 yyyy-mm-dd 로 바꿔 줘야 한다.

 

이 때 위와 같은 형식으로 입력된 데이터를 DATE_FORMAT 함수로 그 형식을 바꾸려 하다 보면 초 단위(1724371200000), 또는 밀리초 단위(20240841600000)로 형식이 원하는 방식과 더욱 멀어질 수 있다.

(초단위, 또는 밀리초 단위까지 나오는 데이터 형식에 대해선 추후 포스팅 해야지!) 

 

이럴 땐 당황하지 말고 DATE_FORMAT 함수가 아닌 CAST함수를 적용하면 된다.

DATE_FORMAT 함수는 데이터를 변환하는 것이 아닌 기존 날짜 또는 시간으로 지정된 날짜 형식의 문자열을 바꾼다면,

CAST 함수는 DATETIME 형식을 DATE로, 또는 INT 형식을 STRING으로, 그 데이터 형식 자체를 변경하는 함수이다.

 

따라서 특정 날짜 데이터가 DATE_FORMAT 함수를 통해 원하는 형식으로 바뀌지 않는다면, 데이터 형식 자체를 변경해 보아야 할 수도 있다.

그런 경우, CAST함수로 우선 그 데이터 형식을 DATE 등 상황에 맞는 형식으로 먼저 바꿔 보면 쉽게 원하는 형식을 갖추게 될 수도 있을 것이다.

 

형식 변환의 한 가지 방법이니 데이터 전처리시 참고해 보면 좋을 것 같다.