Database

[오라클DB] TO_DATE 문제

웨일파도 2023. 3. 28. 10:50
반응형
--날짜 데이터를 문자 데이터로 변환 (TO_CHAR)
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;

--문자 데이터를 날짜 데이터로 변환 (TO_DATE)
SELECT TO_DATE('20230328','YYYYMMDD')
FROM DUAL;

--1981년 1월 1월 이후 입사한 사람 데이터 출력
SELECT *
FROM EMP
WHERE HIREDATE > TO_DATE('19810101','YYYYMMDD');

--JONES라는 사원보다 늦게 입사한 사람 출력
SELECT *
FROM EMP
WHERE HIREDATE > (
                    SELECT HIREDATE
                    FROM EMP
                    WHERE ENAME = 'JONES'
                    );
                    
-- 1. 각 부서 별 입사일이 가장 오래된 사원을 한 명씩 선별해 사원번호, 사원명, 부서번호, 입사일을 출력하라.
SELECT EMPNO, ENAME, DEPTNO, HIREDATE
FROM EMP
WHERE (DEPTNO,HIREDATE) IN (
                            SELECT DEPTNO,MIN(HIREDATE)
                            FROM EMP
                            GROUP BY DEPTNO
                            );


-- 2. 1981년 5월 31일 이후 입사자 중 커미션이 NULL이거나 0인 사원의 커미션은 500으로 그렇지 않으면 기존 커미션을 출력하라.
SELECT EMPNO,ENAME, JOB,MGR,HIREDATE,SAL,DEPTNO
        ,CASE WHEN COMM IS NULL THEN 500
              WHEN COMM = 0 THEN 500
              ELSE COMM
              END COMMITION
FROM EMP
WHERE HIREDATE >= TO_DATE('19810531');

-- 3. 1981년 6월 1일 ~ 1981년 12월 31일 입사자 중 부서명이 SALES인 사원의 부서번호, 사원명, 직업, 입사일을 출력하라.
SELECT DEPTNO, ENAME, JOB, HIREDATE
FROM EMP
WHERE HIREDATE BETWEEN TO_DATE('19810601') AND TO_DATE('19811231') 
        AND DEPTNO = 30;

-- 4. 각 부서별로 1981년 5월 31일 이후 입사자의 부서번호, 부서명, 사원번호, 사원명, 입사일을 출력하시오.
SELECT D.DEPTNO, D.DNAME, E.EMPNO, E.ENAME, E.HIREDATE
FROM EMP E
LEFT JOIN DEPT D ON D.DEPTNO = E.DEPTNO
WHERE E.HIREDATE >= TO_DATE('19810531')
ORDER BY E.DEPTNO;
반응형

'Database' 카테고리의 다른 글

[오라클DB] 시퀀스 SEQUENCE  (0) 2023.03.28
[오라클DB] 쿼리 연습문제  (0) 2023.03.28
[오라클DB] SYSDATE, TO_CAHR  (0) 2023.03.27
[오라클DB] 연습문제2  (0) 2023.03.27
[오라클DB] CASE & DECODE  (1) 2023.03.27