본문 바로가기
Lecture/SQL & Oracle

[SQL 기본만 알아도 할껀 다한다.] 날짜 함수 (Date Functions)

by 알 수 없는 사용자 2012. 7. 16.
반응형


날짜를 처리하는 함수입니다.

  MONTHS_BETWEEN(date1, date2) 

  두 date의 개월차 

  ADD_MONTHS(date, n)

  date 에 n 개월 이후 

  NEXT_DATE(date, 'char' or num) 

  date 의 다음 돌아오는 주 중 'char'요일

  LAST_DATE(date)

  date 의 마지막 날짜




오라클은 오늘의 날짜와 시간에 대해 SYSDATE와 SYSTIMESTAMP 키워드를 제공합니다.

(SYSTIMESTAMP 는 오라클 버전 9i 부터 가능합니다.)

   SYSDATE

   연월일 시분초 

   SYSTIMESTAMP 

   연월일 시분초 밀리초 

SQL에 오늘서 부터 언제까지, 언제부터 오늘까지 등 오늘을 표현하는데 사용할 수 있습니다.




hire_date(입사일) 부터 오늘(SYSDATE)까지 몇 주가 지났는지 조회하는 SQL입니다.

1년이 52주 1일 이니까, WEEK 컬럼을 또 52로 나누면 몇년이 지났는지 나오겠네요.ㅋ

몇 개월이 지났는지는.. ... 4? 5?




개월 수를 세주는 MONTHS_BETWEEN 함수가 있습니다. ㅋ

SYSDATE 부터 hir_date 까지 몇개월이 지났는지 조회합니다.



MONTHS_BETWEEN 은 SELECT 뿐만 아니라 WHERE 에서도 사용할 수 있습니다.

MONTHS_BETWEEN 이외에도 함수의 결과가 조건 비교가 가능하다면

WHERE 절에 응용해서 사용하시면 됩니다.ㅋ




ADD_MONTHS 는 기분 일부터 몇 개월을 더한 후의 날짜를 만들어 줍니다.

05년 9월 21일같이 6개월을 더하면 연도가 넘어간다면,

넘어간 연도로 자동으로 결과 처리합니다.



LAST_DAY는 기준일의 마지막 날짜를 조회합니다.



NEXT_DAY 는 기준 날짜 바로 다음주에 돌아오는 요일을 알려줍니다.

기분 요일을 'MONDAY' 나 '일' 같이 문자로 파라미터를 넘겨도 되지만,

오라클은 요일을 숫자와 매칭하여 인식하기 때문에 이것을 더 많이 활용하기도 합니다.

일 

월 

화 

수 

목 

금 

토 

 1

사용자 요구에 따라, DBA 취향에 따라 날짜가 등록된 형태가 모두 다릅니다.(같을 수도 이뜸)

예를 들어 요일을 표시할때,

MON, TUE..

MONDAY, TUESDAY...

월, 화... 등등

SQL을 작성하기 전에 어떤 형태로 정의되어있는지 알아보고 작성할 수 있지만,

아에 매칭된 숫자로 작성할 경우 일을 하나 줄일 수 있고,

다른 데이터베이스로 SQL을 적용할 경우 수정이 필요 없다는 장점이있습니다.