분석가 Step 1. 데이터 분석/SQL

[PostgreSQL] 날짜의 요일 코드와 요일 구하기

뚱뿌 2023. 7. 26. 14:27

DB에 저장된 테이블에 포함된 날짜 컬럼을 기준으로 

각 날짜를 요일코드와 요일로 변환해 보자. 

 

날짜/시간 데이터를 이용하여 요일 코드 구하기

extract 함수

날짜/시간 데이터에서 year(년도), month(월), day(일)과 같은 요소를 추출한다.

DOW/ISODOW 함수
DOW/ISODOW(timestamp)

timestamp(날짜 및 시간 정보)를 인수로 받아 해당 날짜의 ISO 표준에 따라 1부터 7까지의 숫자로 변환한다.

select extract(DOW FROM CURRENT_DATE);      #일요일(0) ~ 토요일(6)
select extract(ISODOW FROM CURRENT_DATE);   #월요일(1) ~ 일요일(7)

 

CAST 함수
cast(value as type)

cast 함수는 형 변환을 도와주는 함수이다. 

형 변환은 PostgreSQL에서 지원하는 :: 이용해도 된다.

select extract(ISODOW FROM cast(etl_ymd as date)) as 요일코드
select extract(ISODOW FROM etl_ymd::date) as 요일코드

 

날짜/시간 데이터를 이용하여 요일 구하기

CASE WHEN ~ END
CASE WHEN A THEN '1'
           WHEN B THEN '2' ELSE '3'
END 

CASE WHEN 절은 WHEN에 해당하는 값을 THEN에 해당하는 값으로 변환해 주는 것이다.

extract DOW ~ / extract ISODOW ~ 어느 기준인지 확인 후 CASE WHEN ~ END 문을 작성하여 요일을 구한다. 

select case extract(ISODOW FROM a.etl_ymd::date) when '1' then '월요일'
       				                 when '2' then '화요일'
     				                 when '3' then '수요일'
     				                 when '4' then '목요일'
     			                         when '5' then '금요일'
     				                 when '6' then '토요일'
     				                 when '7' then '일요일' end 요일

 

 

[참고]

https://itcoin.tistory.com/172

 

Postgresql - 날짜의 요일가져오기

오라클에서 쓰던대로 to_date -> to_char 신공을 쓰다가 범위초과라는 메시지를 보고 구글링하다가 정리 Postgresql을 쓸때 날짜 계산, 특히 to_char 쓰다가 잘안되는 경우가 있다. 유용하게 쓸수있는 요

itcoin.tistory.com

https://brownbears.tistory.com/309

 

[PostgreSQL] 타입 변환 (type cast)

PostgreSQL에서 타입을 변경하는 함수는 아래와 같이 지원됩니다. CAST()먼저 SQL 표준인 CAST()입니다.CAST(value AS type) -- 예시 CAST(1234 AS TEXT)::다른 한가지는 PostgreSQL에서 지원하는 :: 입니다.value::type --

brownbears.tistory.com

https://icodebroker.tistory.com/entry/DATABASEPOSTGRESQL-EXTRACT-%ED%95%A8%EC%88%98-%EC%98%A4%EB%8A%98-%EB%82%A0%EC%A7%9C-%EC%9A%94%EC%9D%BC-%EA%B5%AC%ED%95%98%EA%B8%B0

 

[DATABASE/POSTGRESQL] EXTRACT 함수 : 현재 날짜 요일 구하기

■ EXTRACT 함수를 사용해 현재 날짜 요일을 구하는 방법을 보여준다. ▶ 예제 코드 (SQL) SELECT EXTRACT(DOW FROM CURRENT_DATE); -- 일요일(0) ~ 토요일(6) SELECT EXTRACT(ISODOW FROM CURRENT_DATE); -- 월요일(1) ~ 일요일(7)

icodebroker.tistory.com