[Postgresql] 날짜시간 추출, EXTRACT() 함수 사용법 정리
오늘은 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세기) |
DAY | 1~31에 해당하는 해당 월의 일 |
DOW | 일요일(0) ~ 토요일(6)까지 반환하는 값 |
DOY | 1~366 까지 해당하는 연중일수 |
EPOCH | 1970년 1월 1일 00:00:00 UTC 부터 현재까지의 초(unixtime이란 -> sas-study.tistory.com/94) |
HOUR | 0 ~ 23 에 해당하는 시간정보 |
MILLISECONDS | 1/1000에 해당하는 밀리초 |
MINUTE | 0 ~ 59에 해당하는 분 정보 |
MONTH | 1 ~ 12에 해당하는 월 정보 |
QUARTER | 1(1~3월), 2(4~6월), 3(7~9월), 4(10~12월) 분기로 나뉘어지는 정보 |
SECOND | 0 ~ 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/ 사이트의 내용을 정리한 내용입니다. 추가적으로 다른 요소를 확인하고 싶으신 분들은 이 사이트를 참조해주세요.