Database/Postgresql

[Postgresql] 날짜시간 추출, EXTRACT() 함수 사용법 정리

코딩하는흑구 2021. 2. 5. 08:08

오늘은 Postgresql에서 특정날짜부분을 추출하는 extract() 함수를 소개해보고자 합니다. 

 

extract() 함수는 날짜/시간 데이터에서 year(년도), month(월), day(일) 과 같은 요소를 추출/검색하는 함수입니다.

 

예를 들면, '2021년 01월 01일 14시 23분 55초' 일때, 현재의 year(2021), month(1), day(1) 의 값을 추출할 수 있습니다.

 


문법

해당 함수는 아래와 같이 사용할 수 있습니다.

EXTRACT(field FROM source)

field란 year, month, day 따위의 날짜/시간 데이터 요소를 말하고

source란 실제 timestamp 값을 의미합니다. '2021-01-01 15:00:00' 와 같은 값입니다.

 

간단히 문법은 살펴보았으니 이제 어떤 인자들이 필요한지 확인해보겠습니다.

 


 

필요인자 정리

EXTRACT() 함수는 두개의 인자를 필요로합니다.

 

1. field

field는 위에서 간단히 설명했듯이 날짜/시간 값에서 추출할 필드를 지정하는 인자입니다.

 

여러가지 인자가 있지만 실무에 자주 사용될 법한 인자들을 정리해보았습니다. 

Field 값의미
CENTURY세기(21세기, 20세기)
DAY1~31에 해당하는 해당 월의 일
DOW일요일(0) ~ 토요일(6)까지 반환하는 값
DOY1~366 까지 해당하는 연중일수
EPOCH1970년 1월 1일 00:00:00 UTC 부터 현재까지의 초(unixtime이란 -> sas-study.tistory.com/94)
HOUR0 ~ 23 에 해당하는 시간정보
MILLISECONDS1/1000에 해당하는 밀리초
MINUTE0 ~ 59에 해당하는 분 정보
MONTH1 ~ 12에 해당하는 월 정보
QUARTER1(1~3월), 2(4~6월), 3(7~9월), 4(10~12월) 분기로 나뉘어지는 정보
SECOND0 ~ 59에 해당하는 초 정보
WEEK주 정보 (1월 1일 : 1, 12월 31일: 52~53)
YEAR연도 정보.

 

 

2. source

source는 timestamp 혹은 interval 타입의 값을 의미합니다. 만약, date 타입을 전달하게 되면 이는 timestamp 타입으로 캐스팅되어 전달됩니다.

 


 

반환타입

double precision (0.0)

 


 

사용 예제
select extract('CENTURY'      from '2021-02-03 15:23:22.23242'::timestamp); -- 21
select extract('DAY'          from '2021-02-03 15:23:22.23242'::timestamp); -- 3
select extract('DOW'          from '2021-02-03 15:23:22.23242'::timestamp); -- 3
select extract('DOY'          from '2021-02-03 15:23:22.23242'::timestamp); -- 34
select extract('EPOCH'        from '2021-02-03 15:23:22.23242'::timestamp); -- 1612365802.23242
select extract('HOUR'         from '2021-02-03 15:23:22.23242'::timestamp); -- 15
select extract('MILLISECONDS' from '2021-02-03 15:23:22.23242'::timestamp); -- 22232.42
select extract('MINUTE'       from '2021-02-03 15:23:22.23242'::timestamp); -- 23
select extract('MONTH'        from '2021-02-03 15:23:22.23242'::timestamp); -- 2
select extract('QUARTER'      from '2021-02-03 15:23:22.23242'::timestamp); -- 1
select extract('SECOND'       from '2021-02-03 15:23:22.23242'::timestamp); -- 22.23242
select extract('WEEK'         from '2021-02-03 15:23:22.23242'::timestamp); -- 5
select extract('YEAR'         from '2021-02-03 15:23:22.23242'::timestamp); -- 2021

 

 

 

해당 글은 www.postgresqltutorial.com/postgresql-extract/ 사이트의 내용을 정리한 내용입니다. 추가적으로 다른 요소를 확인하고 싶으신 분들은 이 사이트를 참조해주세요.