Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL TIME_FORMAT() 함수로 시간 값 추출하기 – DATE_FORMAT()과의 차이점까지 완벽 정리

TIME_FORMAT() 함수란 무엇인가?

MySQL의 TIME_FORMAT() 함수는 DATE_FORMAT() 함수와 매우 유사한 방식으로 동작하지만, 한 가지 중요한 차이점이 있습니다. 바로 시간(time) 값만 추출할 수 있다는 점입니다.

만약 TIME_FORMAT() 함수에 날짜(date) 형식 단위를 전달하면, MySQL은 에러 대신 NULL 값을 반환합니다. 이 점을 반드시 기억해 두어야 의도치 않은 결과를 피할 수 있습니다.

시간 값 추출 예제

아래 예제처럼 시간 관련 형식 단위(%h, %i, %s, %p)를 인수로 전달하면, MySQL은 날짜 부분을 제외하고 시간 값만 정상적으로 추출해 줍니다.

mysql> Select TIME_FORMAT("2017-10-22 13:03:45", "%h %i %s %p") AS 'OFFLOADED TIME';
+----------------+
| OFFLOADED TIME |
+----------------+
| 01 03 45 PM |
+----------------+
1 row in set (0.00 sec)

결과를 보면 입력값이 '2017-10-22 13:03:45'였음에도 불구하고, 출력에는 '01 03 45 PM'이라는 시간 정보만 포함되어 있는 것을 확인할 수 있습니다.

날짜 형식 단위를 사용하면 NULL 반환

반면, 같은 함수에 날짜 형식 단위(%Y, %M, %D)를 인수로 전달하면 MySQL은 다음과 같이 NULL을 반환합니다.

mysql> Select TIME_FORMAT("2017-10-22 13:03:45", "%Y %M %D") AS 'OFFLOADED DATE';
+----------------+
| OFFLOADED DATE |
+----------------+
| NULL |
+----------------+
1 row in set (0.00 sec)

정리 및 활용 팁

  • TIME_FORMAT()은 시간 값 추출 전용으로, DATE_FORMAT()과 문법이 거의 동일합니다.
  • 날짜 형식 단위(%Y, %M, %D 등)를 사용하면 NULL이 반환되므로 주의해야 합니다.
  • 날짜와 시간을 모두 다뤄야 한다면 DATE_FORMAT() 함수를 사용하는 것이 올바른 선택입니다.

따라서 쿼리 작성 시 데이터에서 시간 정보만 필요한 경우에 TIME_FORMAT()을 사용하고, 날짜 정보가 포함된 결과가 필요하다면 DATE_FORMAT()으로 전환하는 것이 안전합니다.