728x90
반응형

날짜를 연산 하는 함수를 알아보겠습니다

오라클은 더 많은 글들이 있으니 포스팅으로 여러 함수와 쿼리들을 확인해보세요

먼가 이상한것이 있거나 의문점이있으면 댓글 남겨주세요

읽어보고 답변 남겨 놓겠습니다

 

그럼 본론으로 들어가겠습니다

 

 

 

 

날짜 계산 (연산자)

SELECT

  SYSDATE + 100, --현재날짜 +100일

  SYSDATE - 100, --현재날짜 -100일

  SYSTIMESTAMP + 100, --현재날짜 +100일

  SYSTIMESTAMP - 100 --현재날짜 -100일

FROM DUAL

 

 

위와같이 + , - 연산자를 활용하여 간단한 날짜 계산이 가능합니다.

 

 

 

날짜 계산 (함수)

SELECT

  ADD_MONTHS(SYSDATE,6),     --현재시간 + 6개월 뒤

  LAST_DAY(SYSDATE),             --해당월 마지막 일자 계산

  NEXT_DAY(SYSDATE,'일요일'),  --다음 주 일요일 계산

  MONTHS_BETWEEN(SYSDATE, SYSDATE-100)      --DATE1과 DATE2의 개월 수 반환

FROM DUAL

 

 

ADD_MONTHS(date, integer) 

 - ADD_MONTHS함수는 매개변수 DATE에 매개변수 INTEGER만큼의 월을 더한 날짜를 리턴합니다.

 

LAST_DATE(date)

 - LASTE_DAY함수는 현재 월의 마지막 일자를 리턴합니다.

 

NEXT_DAY(date, char)

 - NEXT_DAY함수는 매개변수 date의 다음 주 char(요일)의 날짜를 리턴합니다.

 

MONTHS_BETWEEN(date1, date2)

 - MONTHS_BETWEEN함수는 매개변수 date1과 date2 사이의 개월수를 리턴합니다.

 

 

 

다양한 날짜 계산 EXAMPLE

SELECT

  TO_CHAR(SYSDATE ,'yyyy/mm/dd'), --오늘 날짜

 

  TO_CHAR(SYSDATE + 1 ,'yyyy/mm/dd'), --내일 날짜

 

  TO_CHAR(SYSDATE -1 ,'yyyy/mm/dd'), --어제 날짜

 

  TO_CHAR(TRUNC(SYSDATE,'dd') ,'yyyy/mm/dd hh24:mi:ss'), -- 오늘 정각 날짜

 

  TO_CHAR(TRUNC(SYSDATE,'dd') + 1,'yyyy/mm/dd hh24:mi:ss'), -- 내일 정각 날짜

 

  TO_CHAR(SYSDATE + 1/24/60/60 ,'yyyy/mm/dd hh24:mi:ss'), -- 1초 뒤 시간

 

  TO_CHAR(SYSDATE + 1/24/60 ,'yyyy/mm/dd hh24:mi:ss'), -- 1분 뒤 시간

 

  TO_CHAR(SYSDATE + 1/24 ,'yyyy/mm/dd hh24:mi:ss'), -- 1일 뒤 시간

 

  TO_CHAR(TRUNC(SYSDATE,'mm') ,'yyyy/mm/dd'), --이번 달 시작날짜

 

  TO_CHAR(LAST_DAY(SYSDATE) ,'yyyy/mm/dd'), --이번 달 마지막 날

 

  TO_CHAR(TRUNC(ADD_MONTHS(SYSDATE, + 1),'mm') ,'yyyy/mm/dd'), --다음 달 시작날짜

 

  TO_CHAR(ADD_MONTHS(SYSDATE, 1) ,'yyyy/mm/dd hh24:mi:ss'), -- 다음달 오늘 날자

 

  TO_CHAR(TRUNC(SYSDATE, 'yyyy') ,'yyyy/mm/dd'), --올해 시작 일

 

  TO_CHAR(TRUNC(ADD_MONTHS(SYSDATE, -12), 'dd'),'yyyy/mm/dd'), --작년 현재 일

 

  TO_DATE(TO_CHAR(SYSDATE, 'YYYYMMDD')) - TO_DATE('19930315'), -- 두 날짜 사이 일수 계산

 

  MONTHS_BETWEEN(SYSDATE, '19930315'), -- 두 날짜 사이의 월수 계산

 

  TRUNC(MONTHS_BETWEEN(SYSDATE, '19930315')/12,0) --두 날짜 사이의 년수 계산

 

FROM DUAL;

 

 

 

날짜 연산 초단위

  TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS')

  * SYSDATE -1 -> 1일전

  * SYSDATE -1 / (60*60*24) -> 1초전

  * SYSDATE -2 / (60*60*24) -> 2초전

  * SYSDATE -1 / (60*24) -> 1분전

  * SYSDATE -2 / (60*24) -> 2분전

  * SYSDATE -1 / (24) -> 1시간전

  * SYSDATE -2 / (24) -> 2시간전

 

 

1초전도 나누기를 활용하여 계산이 가능합니다

한번 신청하고 후 1시간이 지나지 않았다면 다시 신청 못하게 하는 로직을 만들수 있겠죠?

 

 

데이터에서 날짜를 컨트롤하는 경우는 무척많아서 꼭알아두어야 합니다

TO_DATE에는 문자열이 오면 날짜로 인식이 가능하다고 생각하시고!

언제나 외우려고 하지말고 항상 찾아보면서 몸으로 익히실려는 노력이 더 중요합니다!!

 

절대로 스트레스는 노노!!

728x90
반응형

+ Recent posts

Powered by Tistory, Designed by wallel