• 현재 시간을 얻는 함수
    SELECT SYSDATE, CURRENT_DATE, SYSTIMESTAMP, CURRENT_TIMESTAMP
    FROM DUAL;
    

-> SYSDATE: 시분초 SYSTIMESTAMP : 시분초 ms

  • 세션 시간과 포멧 변경
    ALTER SESSION SET TIME_ZONE= '-1:0'
    ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
    
  • 날짜 추출함수 EXTRACT(YEAR/MONTH/DAY/HOUR/MINUTE/SECOND FROM…)
    SELECT EXTRACT(YEAR FROM SYSDATE) FROM DUAL;
    SELECT EXTRACT(MONTH FROM SYSDATE) FROM DUAL;
    SELECT EXTRACT(DAY FROM SYSDATE) FROM DUAL;
    SELECT EXTRACT(MINUTE FROM SYSDATE) FROM DUAL;
    SELECT EXTRACT(SECOND FROM SYSDATE) FORM DUAL;
    

    ex) 가입 회원중에 비수기(2,3,11,12)월 달에 가입한 회원을 조회하시오.

    SELECT * FROM MEMBERS WHERE EXTRACT(MONTH FROM REGDATE) IN (2,3,11,12);
    
  • 날짜를 누적하는 함수 ADD_MONTH(날짜,정수)
    SELECT ADD_MONTHS(SYSDATE, 1) FROM DUAL;
    SELECT ADD_MONTHS(SYSDATE, -1) FROM DUAL;
    

    ex) 가입 회원 중에 가입한지 6개월이 안되는 회원을 조회하시오.

     SELECT * FROM MEMBERS WHERE ADD_MONTHS(SYSDATE,-6) < REGDATE;
    
  • 날짜의 차이를 알아내는 함수 MONTHS_BETWEEN (날짜, 날짜)
    SELECT MONTHS_BETWEEN(SYSDATE, TO_DATE('2013-12-25')) FROM DUAL;
    

    EX) 위예를 활용해서 MONTHS_BETWEEN 을 써보자

     SELECT * FROM MEMBERS WHERE MONTHS_BETWEEN(SYSDATE, REGDATE) <6>;
    
  • 다음 요일을 알려주는 함수 NEXT_DAY(현재날짜, 다음요일)
    SELECT NEXT_DAY(SYSDATE, '토요일') FROM DUAL;
    SELECT NEXT_DAY(SYSDATE, '토') FROM DUAL;
    SELECT NEXT_DAY(SYSDATE, 7) FROM DUAL;   --7은 토요일에 해당한다.
    
  • 월의 마지막 일자를 알려주는 함수 LAST_DAY(날짜)
    SELECT LAST_DAY(SYSDATE) FROM DUAL;
    
  • 지정된 범위에서 날짜를 반올림하는 / 자르는 함수 ROUNT/TRUNC(날짜,포맷)
    SELECT ROUND(SYSDATEM 'CC'), TRUNC(SYSDATE, 'CC') FROM DUAL;
    SELECT ROUND(SYSDATEM 'YEAR'), TRUNC(SYSDATE, 'YEAR') FROM DUAL;
    SELECT ROUND(SYSDATEM 'Q'), TRUNC(SYSDATE, 'Q') FROM DUAL;
    SELECT ROUND(SYSDATEM 'MONTH'), TRUNC(SYSDATE, 'MONTH') FROM DUAL;
    SELECT ROUND(SYSDATEM 'W'), TRUNC(SYSDATE, 'W') FROM DUAL;
    SELECT ROUND(SYSDATEM 'DAY'), TRUNC(SYSDATE, 'DAY') FROM DUAL;
    SELECT ROUND(SYSDATEM 'D'), TRUNC(SYSDATE, 'D') FROM DUAL;
    SELECT ROUND(SYSDATEM 'HH'), TRUNC(SYSDATE, 'HH') FROM DUAL;
    SELECT ROUND(SYSDATEM 'MI'), TRUNC(SYSDATE, 'MI') FROM DUAL;
    

댓글남기기