본문 바로가기
프로그래밍/DB

날짜 형식 사용하기

by Super User 2012. 9. 24.
  • 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

     

    출처 : http://devbada.tistory.com/71

    '프로그래밍 > 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