본문 바로가기

DeveloP/Oracle

SYSDATE 사용법


오라클에서 날짜 함수는 다음과 같이 포맷을 지정하여 뽑아낼 수 있습니다.
프로그램을 하다보면 시간을 체크해야 되는 경우가 있는데, 오라클에서는 날짜를 연산하는 것이 가능합니다.
그런데 기본으로 제공되는 것은 '일(日)' 기준입니다.

기본적으로 다음과 같은 연산이 지원됩니다.
날짜 + 숫자 → 날짜에서 숫자만큼의 일수를 더함
날짜 - 숫자 → 날짜에서 숫자만큼의 일수를 뺌
날짜1 - 날짜2 → 날짜1에서 날짜2를 뺌

이를 응용하여 일,시,분,초 단위로 원하는 시간의 범위를 뽑아낼 수 있습니다.

▶ 기본 형태 (현재의 시간과 1일 전의 시간)
SQL> select to_char(sysdate,'yyyymmdd hh24:mi:ss'), to_char(sysdate - 1,'yyyymmdd hh24:mi:ss') from dual;
TO_CHAR(SYSDATE,' TO_CHAR(SYSDATE-1
----------------- -----------------
20030207 11:08:16 20030206 11:08:16

▶ 현재시간과 10일전의 시간
SQL> select to_char(sysdate,'yyyymmdd hh24:mi:ss'), to_char(sysdate - 10,'yyyymmdd hh24:mi:ss') from dual;
TO_CHAR(SYSDATE,' TO_CHAR(SYSDATE-1
----------------- -----------------
20030207 11:08:39 20030128 11:08:39

▶ 현재시간과 1시간 전
SQL> select to_char(sysdate,'yyyymmdd hh24:mi:ss'), to_char(sysdate - 1/24,'yyyymmdd hh24:mi:ss') from dual;
TO_CHAR(SYSDATE,' TO_CHAR(SYSDATE-1
----------------- -----------------
20030207 11:09:18 20030207 10:09:18

▶ 현재시간과 1분전
SQL> select to_char(sysdate,'yyyymmdd hh24:mi:ss'), to_char(sysdate - 1/24/60,'yyyymmdd hh24:mi:ss') from dual;
TO_CHAR(SYSDATE,' TO_CHAR(SYSDATE-1
----------------- -----------------
20030207 11:10:05 20030207 11:09:05

▶ 현재시간과 1초전
SQL> select to_char(sysdate,'yyyymmdd hh24:mi:ss'), to_char(sysdate - 1/24/60/60,'yyyymmdd hh24:mi:ss') from dual;
TO_CHAR(SYSDATE,' TO_CHAR(SYSDATE-1
----------------- -----------------
20030207 11:10:50 20030207 11:10:49

* 참고로 날짜/시간 사용시 data 형을 datetime 이 아닌 timestamp 로 하게 되면 밀리초 단위까지 표시할 수 있으며, 그경우 날짜 포맷은 'yyyymmdd hh24:mi:ssxff' 정도로 쓰면 됩니다.