MySQL의 GET_FORMAT() 함수는 DATE, TIME, DATETIME 또는 TIMESTAMP 같은 날짜·시간 데이터 타입을, 두 번째 인자로 지정한 표준 형식에 맞는 포맷 문자열로 변환해 주는 함수입니다. 표준 형식으로는 EUR, INTERNAL, ISO, JIS, USA 다섯 가지를 사용할 수 있으며, 반환되는 포맷 코드는 DATE_FORMAT() 함수에서 사용하는 것과 동일합니다.
이 함수는 단독으로 사용되기보다는 DATE_FORMAT()이나 STR_TO_DATE() 함수와 함께 조합하여 활용할 때 특히 유용합니다. 국가별·표준별 날짜 형식을 일일이 외우지 않아도 되기 때문에 코드의 가독성과 유지보수성을 높여 줍니다.
문법(Syntax)
GET_FORMAT(data_type, standard_format)
data_type에는 DATE, TIME, DATETIME, TIMESTAMP 중 하나를, standard_format에는 EUR, INTERNAL, ISO, JIS, USA 중 하나를 지정합니다.
사용 예제
다음 예제는 DATE 타입에 대해 미국(USA) 표준과 ISO 표준의 날짜 포맷을 조회하는 쿼리입니다.
mysql> Select GET_FORMAT(DATE, 'USA') AS 'AMERICAN Format', -> GET_FORMAT(DATE, 'ISO') AS 'ISO Format'; +-----------------+------------+ | AMERICAN Format | ISO Format | +-----------------+------------+ | %m.%d.%Y | %Y-%m-%d | +-----------------+------------+ 1 row in set (0.00 sec)
위 쿼리는 미국에서 사용하는 날짜 형식(%m.%d.%Y)과 ISO 표준 날짜 형식(%Y-%m-%d)을 반환합니다.
이번에는 TIME 타입에 대해 조회해 보겠습니다.
mysql> Select GET_FORMAT(TIME, 'USA') AS 'AMERICAN Format', -> GET_FORMAT(TIME, 'ISO') AS 'ISO Format'; +-----------------+------------+ | AMERICAN Format | ISO Format | +-----------------+------------+ | %h:%i:%s %p | %H:%i:%s | +-----------------+------------+ 1 row in set (0.00 sec)
미국식 시간 표현은 오전/오후를 나타내는 %p가 포함된 12시간제(%h:%i:%s %p)로 반환되고, ISO 표준은 24시간제(%H:%i:%s)로 반환됩니다.
주요 반환값 정리
자주 사용되는 조합의 반환값을 표로 정리하면 다음과 같습니다.
| 함수 호출 | 반환값 |
|---|---|
| GET_FORMAT(DATE,'USA') | '%m.%d.%Y' |
| GET_FORMAT(DATE,'ISO') | '%Y-%m-%d' |
| GET_FORMAT(DATE,'EUR') | '%d.%m.%Y' |
| GET_FORMAT(DATE,'JIS') | '%Y-%m-%d' |
| GET_FORMAT(DATE,'INTERNAL') | '%Y%m%d' |
| GET_FORMAT(TIME,'USA') | '%h:%i:%s %p' |
| GET_FORMAT(TIME,'ISO') | '%H:%i:%s' |
| GET_FORMAT(DATETIME,'ISO') | '%Y-%m-%d %H:%i:%s' |
| GET_FORMAT(DATETIME,'USA') | '%Y-%m-%d %H.%i.%s' |
DATE_FORMAT()과 함께 활용하기
GET_FORMAT()은 다른 함수의 인자로 전달하여 실질적인 포맷팅 작업에 활용할 수 있습니다.
mysql> SELECT DATE_FORMAT('2024-05-15', GET_FORMAT(DATE, 'EUR')) AS result;
+------------+
| result |
+------------+
| 15.05.2024 |
+------------+이처럼 GET_FORMAT()을 활용하면 유럽식 날짜 형식으로 손쉽게 변환할 수 있으며, 반대로 STR_TO_DATE()와 함께 사용하면 특정 표준 형식의 문자열을 DATE 타입으로 파싱할 때도 유용하게 쓰입니다.