날짜 포맷을 변경하는 방법을 알아보겠습니다.
PostgreSQL에서 날짜 포맷을 변경하기 위해서는 TO_CHAR 함수를 사용합니다.
TO_CHAR 함수는 날짜 포맷뿐만 아니라 숫자 형태의 값의 포맷을 변경할때도 사용합니다.
이번에는 TO_CHAR를 사용해 날짜 포맷을 변경을 해보겠습니다.
TO_CHAR
날짜 포맷을 변경하기 위한 TO_CHAR 함수의 작성 방법을 먼저 확인 해보겠습니다.
TO_CHAR(날짜 타입 데이터 , 날짜 포맷)
날짜 포맷을 지정하기 위해서는 데이터 값 형태가 날짜 형태야 합니다.
20240302 라는 문자열 값을 2024/03/02 포맷으로 변경해보겠습니다.
SELECT TO_CHAR('20240302', 'YYYY/MM/DD');
ERROR: function to_char(unknown, unknown) is not unique
LINE 1: SELECT TO_CHAR('20240302', 'YYYY/MM/DD');
^
HINT: Could not choose a best candidate function. You might need to add explicit type casts.
포맷 변경중에 에러가 발생했습니다.
이유는 20240302 값이 단순히 문자열이기 때문입니다.
먼저 CAST를 사용해 데이터 타입을 날짜 형태로 변경해 다시 날짜 포맷을 변경해보겠습니다.
SELECT TO_CHAR(CAST('20240302' AS DATE), 'YYYY/MM/DD');
to_char
------------
2024/03/02
(1 row)
결과를 보면 에러 없이 날짜 포맷이 되었습니다.
CAST의 자세한 내용은 아래를 참조해주세요
날짜 포맷을 변경하기 위해 TO_CHAR 대입하는 값은 날짜 형태의 값이어야 합니다.
SELECT TO_CHAR(CAST('20240302' AS DATE), 'YYYY/MM/DD');
to_char
------------
2024/03/02
(1 row)
SELECT TO_CHAR(CAST('20240302 123456' AS TIMESTAMP), 'HH24:MI:SS');
to_char
----------
12:34:56
(1 row)
SELECT TO_CHAR(CAST('20240302 123456' AS TIMESTAMP), 'YYYY/MM/DD HH24:MI:SS');
to_char
---------------------
2024/03/02 12:34:56
(1 row)
날짜 포맷을 변경하는 순서를 확인해보면 다음과 같습니다.
변경하려는 값이 날짜 타입의 데이터가 아닌 경우에는 CAST를 사용해 날짜 타입으로 변경 후 TO_CHAR 함수를 사용해 날짜 포맷 변경이 됩니다.
문자열 -> 날짜 타입 변환 – > 날짜 포맷 변경
이번에는 숫자 타입으로 되어있는 날짜 값의 포맷을 변경하는 방법을 보겠습니다.
숫자 타입의 값의 포맷을 변경할때도 TO_CHAR 함수를 사용합니다.
그리고 문자열 값처럼 바로 날짜 포맷을 변경하려면 에러가 발생합니다.
숫자 타입 값의 날짜 포맷을 변경하기 위해서는 아래와 같은 순서가 필요합니다.
숫자 -> 문자열 변환 -> 날짜 타입 변환 – > 날짜 포맷 변경
샘플을 확인해보겠습니다.
SELECT TO_CHAR(CAST(CAST(20240302 AS CHARACTER VARYING(8)) AS DATE), 'YYYY/MM/DD');
to_char
------------
2024/03/02
(1 row)
숫자 타입의 날짜 값의 날짜 포맷도 TO_CHAR 함수를 사용해 변경했습니다.
정리
TO_CHAR 함수는 날짜 포맷을 변경할 수 있습니다.
하지만 대입하는 값의 데이터 타입이 날짜 타입이어야 합니다.
단순히 문자열이나 숫자 값의 날짜 값의 포맷을 변경하려면 에러가 발생합니다.
CAST 함수를 사용해 데이터 타입을 변경하고 날짜 포맷을 변경하도록 해야합니다.
댓글