ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL 단일행 함수_날짜함수
    Data Base_Oracle/SQL 2020. 1. 2. 23:32

    날짜함수

    함수 설명
    months_between() 날짜 사이의 개월수를 반환하는 함수,
    months_between(A, B) : A날짜에서 B날짜를 빼서 계산
    add_months() 특정 날짜에 지정한 개월수를 더한 날짜를 반환하는 함수,
    add_months(날짜, 개월수)
    next_day() 지정한 날짜 이후에 해당 요일이 오는 날짜를 반환하는 함수
    next_day(지정한 날짜, '요일'),
    요일은 숫자로도 사용 가능 : 일요일 - 1, 월요일 - 2,화요일 - 3,,,,,금요일 - 6,토요일 - 7
    last_day() 지정한 날짜가 포함되어 있는 달의 마지막 날짜를 반환하는 함수,
    윤년, 평년을 자동으로 계산
    sysdate 현재 날짜를 반환하는 함수

    날짜함수 사용례

    { months_between() }

    ▷ emp테이블에서 각 사원들의 근무 개월수 계산(오늘날짜 - 입사일)
    사원명, 입사일, 근무 개월수 순으로 출력
    부서번호는 10번
    근무 개월수가 가장 많은 순으로 정렬
    ▶ [ SQL > select ename, hiredate, months_between(sysdate, hiredate) 근무개월수
    2 from emp
    3 where deptno=10
    4 order by 3 desc ]

    ENAME HIREDATE 근무개월수
    CLAKR 81/06/09 462.793551
    KING 81/11/17 452.535486
    MILLER 82/01/23 455.341938

    ※ 소수점은 round(), trunc(), floor() 등의 함수로 중첩함으로써 처리할 수 있음

    { add_months() }

    ▷ emp테이블에서 입사일기준 10개월 후의 날짜를 계산(단, sal이 2000이상인 사원들만 출력),
    필드 순서는 이름, 급여, 10개월후의 날짜

    ▶ [ SQL> select ename, sal, add_months(hiredate, 10) "10개월 후" from emp where sal>=2000; ]

    ENAME SAL 10개월 후
    JONES 2975 82/02/02
    BLAKE 2859 82/03/01
    CLARK 2450 82/04/09
    ... ... ...

    { next_day() }

    ▷ emp테이블에서 사원들이 입사한 날짜의 요일 구하기

    ▶ [ SQL> select deptno, ename, hiredate, next_day(hiredate, '목요일') from emp; ]
        → 목요일인 날짜에서부터 고용일의 요일을 계산하면 됨

    DEPTNO ENAME HIREDATE NEXT_DAY(HIREDATE, '목요일')
    20 SMITH 80/12/17 80/12/18
    30 ALLEN 81/02/20 81/02/26
    ... ... ... ...

    ※ next_day()안의 '목요일'은 5로도 대체 가능

    { last_day() }

    ▷ dual테이블에서 오늘 날짜가 속한 달의 마지막 날짜를 계산

    ▶ [ SQL> select last_day(sysdate) from dual; ]

    LAST_DAY
    20/01/31

    ▷ emp테이블에서 입사한 달의 근무일수를 계산,
       이름의 두번째 글자가 'A'인 직원 중에서 근무일수가 많은 순으로 정렬

    ▶ [ SQL> select ename, hiredate, last_day(hiredate)-hiredate "입사한 달의 근무일"
    from emp where ename like '_A%'
    order by 3 desc; ]

    ENAME HIREDATE 입사한 달의 근무일
    JAMES 81/12/03 28
    WARD 81/02/22 6
    MARTIN 81/09/28 2

    날짜를 이용한 계산은 수식으로 하기 어렵기 때문에 날짜함수를 이용하는 편이 좋습니다.

    'Data Base_Oracle > SQL' 카테고리의 다른 글

    SQL 단일행 함수_일반함수  (0) 2020.01.02
    SQL 단일행 함수_변환함수, to_char() 출력 패턴  (0) 2020.01.02
    SQL 단일행 함수_숫자함수  (0) 2020.01.02
    SQL 단일행 함수_문자함수  (0) 2020.01.02
    SQL Dual Table  (0) 2020.01.02

    댓글

Designed by Tistory.