2.5 날짜함수, 형변환 함수 1

추승완·2025년 3월 14일

오라클 SQL

목록 보기
12/27

날짜 함수

SYSDATE

  • 시스템에서제공하는 기본 현재 날짜와 시간 값

  • date + NUMBER : 숫자만큼 일수가 더해진 날짜 Return

  • date - NUMBER : 숫자만큼 일수가 빠진 날짜 Return

  • date - date : 두 날짜 사이의 일수 Return

  • date + 1 / 24 : 한시간을 더한 날짜 Return

SYSTIMESTAMP

  • 시스템에서 제공하는 TIMESTAMP형의 현재 날짜와 시간 값

ADD_MONTHS(date, n)

  • 주어진 날짜 자료 date에 n월을 더한 날짜 반환

  • 사용 예시) HR계정 사원테이블에서 2015년 이후에 입사한 사원들의 입사일을 5년 뒤로 변경하시오
    ex) 2015/03/01=>2020/03/01)

  UPDATE EMP
     SET HIRE_DATE = ADD_MONTHS(HIRE_DATE,60) -- 5년 뒤니까 12개월*5 는 60
   WHERE HIRE_DATE >= '20150101';
   
   SELECT EMP_NAME, HIRE_DATE
     FROM EMP
    WHERE HIRE_DATE >= '20150101'
    ORDER BY 2;
  
  COMMIT;

NEXT_DAY(date, c)

  • 주어진 날짜 자료 date 이후의 가장 빠른 c 요일의 날짜

  • Char : 월, 월요일, …

LAST_DAY(date)

  • 주어진 날짜 자료 date에 포함된 월의 마지막 날짜 반환
  • 사용 예시) 매입테이블에서 2020년 2월에 매입된 정보를 출력하시오
    (일자,상품번호,수량이며 날짜순으로 출력할 것)
  SELECT BUY_DATE AS 일자,
         PROD_ID AS 상품번호,
         BUY_QTY AS 매입수량
    FROM BUYPROD;
   WHERE BUY_DATE BETWEEN '20200201' AND LAST_DAY('20200201')
   ORDER BY 1;

하지만 별로 좋은 방법이 아님, 오라클에게 자동으로 형변환 시키는 것이므로.

MONTHS_BETWEEN(date1, date2)

  • 주어진 두개의 날짜 자료 date1과 date2 사이의 개월수 반환
  • 사용 예시) 사원테이블에서 사원들의 근무기간을 월까지 정확히 조회하시오 ex) 2년 5개월
   SELECT EMP_ID,
          EMP_NAME,
          HIRE_DATE,
          TRUNC(MONTHS_BETWEEN(SYSDATE, HIRE_DATE)/12) || '년 ' || -- 1년이 12개월이니까 12로 나누기
          ROUND(MOD(MONTHS_BETWEEN(SYSDATE, HIRE_DATE),12)) || '개월' -- ROUND로 소수점 없애기
          AS 근무기간
     FROM C##HR.EMP;

EXTRACT(fmt FROM date)

  • 주어진 날짜 자료 date에서 필요한 부분만 추출
  • fmt = YEAR, MONTH, DAY, HOUR, MINUTE, SECOND

ROUND(date [,fmt]), TRUNC(date [,fmt]),

  • 주어진 날짜 자료 date에서 fmt를 기준으로 반올림한(ROUND) 또는 절삭한(trunc) 날짜 반환

  • fmt : YEAR, MONTH, DAY, DD, 월, 월요일, …

형변환 함수

CAST(expr AS type)

  • 명시적으로 expr 자료형을 type 타입으로 변환

TO_CHAR( c | n | d [,fmt])

  • 문자열, 숫자, 날짜를 지정한 형식의 문자열 변환

  • 문자열은 CHAR, CLOB 타입을 VARCHAR2로 변환만 가능

---------날짜 형식 지정 문자열----------

---------숫자 형식 지정 문자열----------

TO_NUMBER( c [,fmt])

  • 숫자 형식의 문자열을 숫자로 반환

  • -부호와 .소수점 만 숫자로 변환 가능

  • 9,957,000 을 숫자로 바꾸려면 fmt에 형식지정문자열을 써줘야함.

  • 9,957,000 -> FMT -> C(문자열) 느낌

TO_DATE( n | c [,fmt])

-날짜 형식의 문자열이나 숫자 자료를 DATE형으로 반환

profile
안녕하세요. 개발, 해보겠습니다

0개의 댓글