Oracle - 날짜 함수, 변환 함수

uglyduck.dev·2020년 9월 27일
0

따라해보기 🎭

목록 보기
8/12

SYSDATE()

  • 현재(시스템)의 날짜를 출력

SELECT SYSDATE FROM 테이블;

SELECT SYSDATE FROM DUAL;
SYSDATE
20/05/19

MONTHS_BETWEEN(date1, date2)

  • 두 날짜 사이의 개월 수 차이를 구함
SELECT FIRST_NAME, LAST_NAME, MONTHS_BETWEEN(sysdate, hire_date) FROM EMPLOYEES WHERE DEPARTMENT_ID = 50;
FIRST_NAMELAST_NAMEMONTHS_BETWEEN(SYSDATE, HIRE_DATE)
DonaldOConnell92.4792387246117...
DouglasGrant85.737303240740...
MatthewWeiss127.576012918160...

ADD_MONTHS()

  • 개월 수를 더함
SELECT ADD_MONTHS (sysdate, 7) FROM DUAL;
ADD_MONTHS(SYSDATE, 7)
20/05/26

NEXT_DAY()

  • 다가올 날짜를 구함
SELECT NEXT_DAY(sysdate, 'sunday') FROM DUAL;
NEXT_DAY(SYSDATE,'SUNDAY')
20/05/24

LAST_DAY()

  • 해당 달의 마지막 날짜를 구함
SELECT LAST_DAY(sysdate) FROM DUAL;
LAST_DAY(SYSDATE)
20/05/31

TO_CHAR()

  • 날짜를 문자열 형태로 변환**
SELECT TO_CHAR(sysdate, 'yyyy-mm-dd') FROM DUAL;
TO_CHAR(SYSDATE,'YYYY-MM-DD')
2020-05-19

TO_DATE()

  • 문자열을 날짜 형태로 변환
SELECT TO_DATE('2020/05/19', 'YYYY/MM/DD') FROM DUAL;
TO_DATE('2020/05/19','YYYY/MM/DD')
20/05/19

NVL()

  • NULL값을 다른 데이터로 변경하는 함수
SELECT FIRST_NAME, LAST_NAME, NVL(COMMISSION_PCT, 0) COMMISSION FROM EMPLOYEES;
FIRST_NAMELAST_NAMECOMMISSION
AlexanderKhoo0
ShelliBaida0
GuyHimuro0

DECODE()

  • switch문의 역할을 하는 함수
SELECT DEPARTMENT_ID, DECODE(DEPARTMENT_ID, 20, '마케팅부', 60, '전산부', 90, '경영부', '부서') FROM EMPLOYEES;
DEPARTMENT_IDDECODE(DEPARTMENT_ID, 20, '마케팅부', 60, '전산부', 90, '경영부', '부서')
20마케팅부
60전산부
90경영부
100부서

CASE()

  • elseif문과 같은 역할 함수
SELECT FIRST_NAME, DEPARTMENT_ID, 
    CASE WHEN DEPARTMENT_ID = 20 THEN '마케팅부'
         WHEN DEPARTMENT_ID = 60 THEN '전산실'
         WHEN DEPARTMENT_ID = 90 THEN '경영부'
         ELSE ''
         END '부서명'
FROM EMPLOYEES;
FIRST_NAMEDEPARTMENT_ID부서명
Donald50(NULL)
Douglas50(NULL)
Jennifer10(NULL)
Michael20마케팅부
Pat20마케팅부
Alexander60전산실
Bruce60전산실
Diana90경영부

Reference

profile
시행착오, 문제해결 그 어디 즈음에.

0개의 댓글