※ 이전, 오라클 혹은 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
어쨌거나, 기타 상세한 내용은 PostgreSQL 의 Documentary 페이지에서 확인할 수 있습니다.
http://www.postgresql.org/docs/9.0/interactive/datatype-datetime.html
'프로그래밍 > DB' 카테고리의 다른 글
MSSQL 트랜잭션 로그 축소 (0) | 2012.11.02 |
---|---|
MSSQL 트랜젝션 (0) | 2012.10.11 |
[MSSQL 트랜잭션 로그 관리] MSSQL 2000 (0) | 2011.07.04 |
오라클 암호 모를때 (0) | 2011.05.18 |
오라클 백업 및 복구 (0) | 2011.05.12 |