본문 바로가기

Database/Oracle

시간 다루기 / TRUNC, NEXT_DAY, SYSDATE 등등

오라클 및 티베로 DB를 하다보면 JOB 등록 시 interval 설정이나, 시간과 관련된 쿼리문 작성 시 원하는 값을 얻기 위해서 시간을 잘 다루어야 합니다. 



[동작방식]

JOB 등록시 내부 동작 방식을 잘 알아둬야 합니다. 그리고 티베로의 경우 비활성화된 JOB을 다시 활성화 하게 되면 JOB이 바로 수행되기 때문에 주의를 요합니다. (반드시 NEXT_DAY를 지정해 주시기 바랍니다. 

 

Next_DAY값은 작업이 수행되는 시점에 interval 값을 참조하여 계산되어 집니다.



[핵심표현]


값/시/분/초


1/24  -- 1시 의미 예) 2/24 --2시

1/24/60 or 1/1440 -- 1분을 의미 예) 60/24/60은 1시간을 의미

1/24/60/60 or 1/86400 -- 1초를 의미



[다양한 예제]

여기서 시간은 24단위로 표시


--매일 01:00시 수행

SELECT TRUNC(SYSDATE+1)+(1/24) FROM DUAL;


--매주 일요일 01:00시에 수행 (NEXT_DAY함수 두번째 인수값의 범위는 1(일)~7(토))

SELECT NEXT_DAY(TRUNC(SYSDATE)+(1/24), 1) FROM DUAL;


--해당 월의 마지막 일 확인

SELECT TO_CHAR(LAST_DAY(SYSDATE), 'DD') FROM DUAL;



[번외]

--현재 스키마명 확인 쿼리 

SELECT SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') FROM DUAL;


--현재 로그인한 사용자명 확인 쿼리

SELECT * FROM USER_USERS;

'Database > Oracle' 카테고리의 다른 글

시간 계산  (0) 2018.03.12