[PostgreSQL] Date type 칼럼 데이터를 varchar 형식으로 바꾸기 [YYYYMMDD]
PostgreSQL을 사용하다 보면 날짜 변환에 있어서 어려움이 생기는 경우가 있다.
예를 들어 '2022-01-01' 형식으로 들어오는 물리 데이터 타입이 DATE인 칼럼을
'202201'로 들어오는 varchar 형식의 칼럼과 비교를 하거나 해당 형태로 변환하고 싶을 때는 어떤 식으로 SQL을 작성해주면 될까?
만약 DATE 타입의 칼럼 이름이 DATE_ST_DT라고 해보자
그러면
SELECT TO_CHAR(DATE_ST_DT::date, 'YYYYMM') AS DATE_YRMM
이런식으로 작성할 수 있다.
만약 DATE_ST_DT에 '2022-12-01'로 들어오는 칼럼이었다면 '202212'로 해서 데이터가 보여질 것이다.
만약 년월일에서 일자까지 보여주고 싶게 한다면
SELECT TO_CHAR(DATE_ST_DT::date, 'YYYYMMDD') AS DATE_YRMM
라고 쓰면 된다.
'2022-12-27'의 데이터였다면 형태만 달라져서 '20221227' 로 데이터가 보여질 것이다.
여기서 YYYY는 year를 의미, MM은 month를 의미, DD는 date를 의미하기 때문에
단순 랜덤한 알파벳으로
SELECT TO_CHAR(DATE_ST_DT::date, 'AAAABBCC') AS DATE_YRMM
이렇게 사용하면 정말 AAAABBCC라는 형태로 찍히니 이 점을 유의해서
유의미한 YYYYMMDD 중에 원하는 형태로 사용해야 한다.
즉 TO_CHAR( 변경 원하는 칼럼, 원하는 형식)
이런 식의 형태의 함수인데 여기서 DATE_ST_DT를 date 형태의 칼럼으로 한 번 인식시키기 위해 ::date를 붙인 것이라고 생각하면 된다.