본문 바로가기

Languages/DataBase

POSTGRESQL - 날짜 형식 사용하기




날짜 형식 사용하기


  

  • PostgreSQL 을 이용하여 시간 관련 명령어를 사용해 봅니다.

※ 이전, 오라클 혹은 DB2 와 비교하자면, 오라클과는 다르고, DB2와는 매우 비슷합니다.

- 아래의 표를 확인하여, 사용법을 익혀 보자구요!

- 출처 : PostgreSQL 공식 홈페이지, 기준버전 9.0

- URL : http://www.postgresql.org/docs/9.0/interactive/functions-datetime.html

* Date/Time Functions and Operators

사용자는 아래의 나열된 연산자를 통하여, 시간 및 날짜관련 명령을 통해 아래의 표 예제와 같은 결과를 얻을 수 있습니다.

연산자

예제

결과

+

date '2001-09-28' + integer '7'

date '2001-10-05'

+

date '2001-09-28' + interval '1 hour'

timestamp '2001-09-28 01:00:00'

+

date '2001-09-28' + time '03:00'

timestamp '2001-09-28 03:00:00'

+

interval '1 day' + interval '1 hour'

interval '1 day 01:00:00'

+

timestamp '2001-09-28 01:00' + interval '23 hours'

timestamp '2001-09-29 00:00:00'

+

time '01:00' + interval '3 hours'

time '04:00:00'

-

- interval '23 hours'

interval '-23:00:00'

-

date '2001-10-01' - date '2001-09-28'

integer '3' (days)

-

date '2001-10-01' - integer '7'

date '2001-09-24'

-

date '2001-09-28' - interval '1 hour'

timestamp '2001-09-27 23:00:00'

-

time '05:00' - time '03:00'

interval '02:00:00'

-

time '05:00' - interval '2 hours'

time '03:00:00'

-

timestamp '2001-09-28 23:00' - interval '23 hours'

timestamp '2001-09-28 00:00:00'

-

interval '1 day' - interval '1 hour'

interval '1 day -01:00:00'

-

timestamp '2001-09-29 03:00' - timestamp '2001-09-27 12:00'

interval '1 day 15:00:00'

*

900 * interval '1 second'

interval '00:15:00'

*

21 * interval '1 day'

interval '21 days'

*

double precision '3.5' * interval '1 hour'

interval '03:30:00'

/

interval '1 hour' / double precision '1.5'

interval '00:40:00'

또한 아래의 나열된 함수를 통하여, 시간 및 날짜관련 명령을 통해 아래의 표 예제와 같은 결과를 얻을 수 있습니다.

함수

결과 타입

정의

예제

결과 값

age(timestamp, timestamp)

차이(간격)

두 날짜 사이의 시간차이를 계산

age(timestamp '2001-04-10', timestamp '1957-06-13')

43 years 9 mons 27 days

age(timestamp)

차이(간격)

현재 날짜와 비교 날짜의 시간 차이를 계산

age(timestamp '1957-06-13')

43 years 8 mons 3 days

clock_timestamp()

timestamp with time zone

현재 날짜와 시간(타임 존 포함)

current_date

date

현재 날짜

current_time

time with time zone

오늘 날짜의 현재 시간

current_timestamp

timestamp with time zone

현재 날짜와 현재 시간

date_part(text, timestamp)

double precision

날짜 전체 부분의 파트 별 , 'year','month','day', 'hour','minute','second' 중 선택한 파트를 표시함.

date_part('hour', timestamp '2001-02-16 20:38:40')

20

date_part(text, interval)

double precision

날짜 전체 부분의 파트 별 , 'year','month','day', 'hour','minute','second' 중 선택한 파트를 표시함.

date_part('month', interval '2 years 3 months')

3

date_trunc(text, timestamp)

timestamp

조건에 따라 날짜를 절삭함.

date_trunc('hour', timestamp '2001-02-16 20:38:40')

2001-02-16 20:00:00

extract(field from timestamp)

double precision

날짜 전체 부분의 파트 별 , 'year','month','day', 'hour','minute','second' 중 선택한 파트를 표시함.

extract(hour from timestamp '2001-02-16 20:38:40')

20

extract(field from interval)

double precision

날짜 전체 부분의 파트 별 , 'year','month','day', 'hour','minute','second' 중 선택한 파트를 표시함.

extract(month from interval '2 years 3 months')

3

isfinite(date)

boolean

유효한 날짜인지 확인함

isfinite(date '2001-02-16')

true

isfinite(timestamp)

boolean

유효한 날짜타입인지 확인함

isfinite(timestamp '2001-02-16 21:28:30')

true

isfinite(interval)

boolean

Test for finite interval

isfinite(interval '4 hours')

true

justify_days(interval)

interval

입력된 날의 수를 통해 달, 일로 표시해 줌

justify_days(interval '35 days')

1 mon 5 days

justify_hours(interval)

interval

Adjust interval so 24-hour time periods are represented as days

justify_hours(interval '27 hours')

1 day 03:00:00

justify_interval(interval)

interval

Adjust interval using justify_days and justify_hours, with additional sign adjustments

justify_interval(interval '1 mon -1 hour')

29 days 23:00:00

localtime

time

현재 시간을 출력

localtimestamp

timestamp

현재 날짜 및 시간을 출력

now()

timestamp with time zone

현재의 날짜 및 시간을 출력 (타임존)

statement_timestamp()

timestamp with time zone

현재의 날짜 및 시간을 문장으로 출력

(타임존)

timeofday()

text

현재의 날짜 및 시간을 문자열로 출력(타임존)

transaction_timestamp()

timestamp with time zone

현재 트랜잭션에서의 날짜와 시간을 출력.

일반적으로 오라클 혹은 DB2 에서 가상의 테이블에서 데이터를 조회하고자 할 때,

(ORACLE) - SELECT SYSDATE FROM DUAL;

(DB2) - SELECT CURRENT TIMESTAMP FROM SYSIBM.DUMMY1;

와 같이 사용할 수 있습니다.

하지만, PostgreSQL은 일반적인 다른 ODBMS와 달리, DUAL 테이블과 같은 임시테이블이 없습니다.

따라서, 아래와 같이 해당 명령어를 바로 출력합니다.

SELECT CURRENT_TIME;

Result: 14:39:53.662522-05

SELECT CURRENT_DATE;

Result: 2001-12-23

SELECT CURRENT_TIMESTAMP;

Result: 2001-12-23 14:39:53.662522-05

SELECT CURRENT_TIMESTAMP(2);

Result: 2001-12-23 14:39:53.66-05

SELECT LOCALTIMESTAMP;

Result: 2001-12-23 14:39:53.662522

어쨌거나, 기타 상세한 내용은 PostgreSQLDocumentary 페이지에서 확인할 수 있습니다.

http://www.postgresql.org/docs/9.0/interactive/datatype-datetime.html

.



}

'Languages > DataBase' 카테고리의 다른 글

공통 - 테이블 크기 산정 방법  (0) 2011.09.08
POSTGRESQL - DATATYPE - 데이터형  (2) 2011.09.08
POSTGRESQL - 시작  (0) 2011.09.08
ORACLE - MERGE INTO  (0) 2011.09.08
ORACLE - ORACLE 정보 확인 쿼리  (0) 2011.09.08