PostgreSQL 기초강의, PostgreSQL 기초강좌
95강 SQL 함수 정리 : PostgreSQL Date/Time Functions
SQL 함수 정리 95강 시작합니다.
이번 시간에는
▶ PostgreSQL Date/Time Functions
에 대해서 알아보는 시간입니다.
이번 시간에는 PostgreSQL SQL에서 DATE/TIME 관련한 함수에 대해서 알아봅니다.
오늘은 함수의 종류와 간단한 사용법을 알아보고 다음시간부터 중요한 함수에 대해서 깊게 알아보도록 하겠습니다.
Date/Time Functions

함수를 나열하고 설명과 예를 덧 붙이도록 하겠습니다.
함수에서 → 다음에는 리턴되는 형태를 표시합니다.
예제에서는 → 다음에 결과 값이 표시됩니다.
select를 붙여서 실행해 보시면 결과를 확인할 수 있습니다.
age ( timestamp, timestamp ) → interval
두 값으로 age를 계산합니다.
age(timestamp '2001-04-10', timestamp '1957-06-13') → 43 years 9 mons 27 days
age ( timestamp ) → interval
현재일자를 기준으로 나이를 계산
age(timestamp '1957-06-13') → 65 years 7 mons 15 days
clock_timestamp ( ) → timestamp with time zone
현재일자 및 시각을 리턴
clock_timestamp() → 2023-01-28 23:58:13.612 +0900
current_date → date
현재일자
current_date → 2023-01-29
current_time → time with time zone
현재시각
current_time → 00:03:48 +0900
ccurrent_timestamp → timestamp with time zone
현재 날짜 및 시각
current_timestamp → 2023-01-29 00:11:05.242 +0900
date_part ( text, timestamp ) → double precision
타임스탬프에서 필요한 인자를 추출
date_part('hour', timestamp '2001-02-16 20:38:40') → 20
| text 값 | 의미 |
| 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 | 연도 정보. |
date_part ( text, interval ) → double precision
시간 간격 값에서 필요 인자를 추출
date_part('month', interval '2 years 3 months') → 3
date_trunc ( text, timestamp ) → timestamp
시간 자르기, text 인자 이후의 시간 버림
date_trunc('hour', timestamp '2001-02-16 20:38:40') → 2001-02-16 20:00:00
date_trunc ( text, timestamp with time zone, text ) → timestamp with time zone
시간 자르기, text 인자 이후의 시간 버림, 마지막인자 타임존 적용
date_trunc('day', timestamptz '2001-02-16 20:38:40+00', 'Australia/Sydney') → 2001-02-16 13:00:00+00
date_trunc ( text, interval ) → interval
시간 간격 값에서 자르기
date_trunc('hour', interval '2 days 3 hours 40 minutes') → 2 days 03:00:00
extract ( field from interval ) → numeric
간격에서 필요 필드 가져오기
extract(month from interval '2 years 3 months') → 3
extract ( field from timestamp ) → numeric
타임스탬프에서 필요 필드 가져오기
extract(hour from timestamp '2001-02-16 20:38:40') → 20
isfinite ( date ) → boolean
일자가 유효한 값인지 검정
isfinite(date '2001-02-16') → true
isfinite ( timestamp ) → boolean
타임스탬프가 유효한 값인지 검정
isfinite(timestamp 'infinity') → false
isfinite ( interval ) → boolean
시간 간격이 유효한 값인지 검정
isfinite(interval '4 hours') → true
justify_days ( interval ) → interval
30일 기간이 월로 표시되도록 간격 조정
justify_days(interval '35 days') → 1 mon 5 days
justify_hours ( interval ) → interval
24시간이 일로 표시되도록 간격 조정
justify_hours(interval '27 hours') → 1 day 03:00:00
justify_interval ( interval ) → interval
justice_days 및 justice_hours를 사용하여 간격 조정
justify_interval(interval '1 mon -1 hour') → 29 days 23:00:00
localtime → time
현재 시간
localtime → 14:39:53.662522
localtimestamp → timestamp
현재일자/시간
localtimestamp → 2023-01-29 14:41:44.598580
타임스탬프의 표기방식은 세팅에 따라 다를 수 있습니다.
저는 밀리세컨드를 'SSSSSS' 6자리로 세팅해서 사용합니다. 3자리로 사용하시는 분들도 많은데 6자리가 기본입니다.
make_date ( year int, month int, day int ) → date
연도, 월 및 일 필드에서 날짜 만들기
make_date(2013, 7, 15) → 2013-07-15
make_interval ( [ years int [, months int [, weeks int [, days int [, hours int [, mins int [, secs double precision ]]]]]]] ) → interval 입 력
년, 월, 주, 일, 시간, 분 및 초 필드에서 간격을 만듭니다.
make_interval(days => 10) → 10 days
make_time ( hour int, min int, sec double precision ) → time
시간, 분 및 초 필드로 시간 만들기
make_time(8, 15, 23.5) → 08:15:23.5
make_timestamp ( year int, month int, day int, hour int, min int, sec double precision ) → timestamp
타임스탬프 만들기
make_timestamp(2013, 7, 15, 8, 15, 23.5) → 2013-07-15 08:15:23.5
now ( ) → timestamp with time zone
현재 일자/시간 타임존 표시
now() → 2023-01-29 14:51:30.620500 +0900
statement_timestamp ( ) → timestamp with time zone
현재 일자/시간 타임존 표시
statement_timestamp() → 2023-01-29 14:53:34.814340 +0900
timeofday ( ) → text
현재 날짜 및 시간(예: clock_time 스탬프, 텍스트 문자열)
timeofday() → Sun Jan 29 14:54:49.070273 2023 KST
transaction_timestamp ( ) → timestamp with time zone
현재 일자/시간 타임존 표시
2023-01-29 14:56:07.164150 +0900
일자/시간과 관련된 함수를 간단히 소개했습니다.
이외에도 함수들이 있지만 필요한 경우 찾아보시면 될 것 같습니다.
다음 시간부터는 중요한 함수들에 대해 다시 다루어 보도록 하겠습니다.
감사합니다.
| 본 강의는 PostgreSQL Tutorial을 참조합니다. https://www.postgresqltutorial.com/ |
| Do it! SQL을 찾아 주셔서 감사합니다. 공감 ♥ , 댓글이 큰 힘이 됩니다. |
'IT > SQL 기초강좌 (PostgreSQL)' 카테고리의 다른 글
| 97강 SQL 함수 정리 : PostgreSQL TO_TIMESTAMP Function (41) | 2023.02.08 |
|---|---|
| 96강 SQL 함수 정리 : PostgreSQL TO_DATE Function (152) | 2023.02.07 |
| 94강 SQL 함수 정리 : PostgreSQL Date/Time Operators (116) | 2023.02.05 |
| 93강 SQL 함수 정리 : PostgreSQL NTH_VALUE Function (69) | 2023.02.04 |
| 92강 SQL 함수 정리 : PostgreSQL NTILE Function (63) | 2023.02.03 |
댓글