본문 바로가기
IT/SQL 기초강좌 (PostgreSQL)

95강 SQL 함수 정리 : PostgreSQL Date/Time Functions

by DoitSQL 2023. 2. 6.
728x90

 PostgreSQL 기초강의, PostgreSQL 기초강좌

95강 SQL 함수 정리 : PostgreSQL Date/Time Functions   

 

SQL 함수 정리 95강 시작합니다.

 

이번 시간에는

 PostgreSQL Date/Time Functions

에 대해서 알아보는 시간입니다.

 

이번 시간에는 PostgreSQL SQL에서 DATE/TIME 관련한 함수에 대해서 알아봅니다.

오늘은 함수의 종류와 간단한 사용법을 알아보고 다음시간부터 중요한 함수에 대해서 깊게 알아보도록 하겠습니다.

 


Date/Time Functions   

Date/Time

함수를 나열하고 설명과 예를 덧 붙이도록 하겠습니다.

함수에서 → 다음에는 리턴되는 형태를 표시합니다.

예제에서는 → 다음에 결과 값이 표시됩니다.

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을 찾아 주셔서 감사합니다. 공감 ♥ , 댓글이 큰 힘이 됩니다.

 

728x90

댓글