1월 12, 2024

[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를 붙인 것이라고 생각하면 된다.