본문 바로가기

DB

형변환 함수

/*
    DUAL 테이블
    1. DUMMY 칼럼 1개를 가지고 있는 테이블이다.
    2. 'X' 값을 가지고 있다.
    3. FROM절이 필요 없는 SELECT문을 사용할 때 DUAL 테이블을 이용한다.
*/


-- 데이터타입변환 : 숫자, 날짜, 문자 등의 데이터타입을 바꿈


/*
    1. 문자 -> 숫자로 변환하기
        TO_NUMBER(문자)    
*/
SELECT TO_NUMBER('123')
  FROM DUAL;


/*
    2. 숫자 -> 문자로 변환하기
        TO_CHAR(숫자, [형식])
*/
SELECT TO_CHAR(1234)
     , TO_CHAR(1234, '999999')  -- '  1234'
     , TO_CHAR(1234, '000000')  -- '001234'
     , TO_CHAR(1234, '9,999')   -- '1,234'
     , TO_CHAR(12345, '9,999')  -- '######' 숫자는 5자리인데, 형식은 4자리만 지정되었다.
     , TO_CHAR(12345, '99,999') -- '12,345'
  FROM DUAL;


/*
    3. 날짜 -> 문자로 변환하기
        TO_CHAR(날짜, [형식])
        
        * 날짜/시간 형식
        1) YY   : 년도 2자리
        2) YYYY : 년도 4자리
        3) MM   : 월 2자리(01~12)
        4) DD   : 일 2자리(01~31)
        5) AM   : 오전 / 오후
        6) HH   : 12시각(01~12)
        7) HH24 : 24시간(00~23)
        8) MI   : 분(00~59)
        9) SS   : 초(00~59)
*/
SELECT TO_CHAR(HIRE_DATE, 'YYYY-MM-DD')
  FROM EMPLOYEES;

/*
    4. 문자 -> 날짜로 변환하기
        TO_DATE(문자, [형식])
*/

-- 현재 날짜와 시간
SELECT SYSDATE       -- '23/07/04'
     , SYSTIMESTAMP  -- '23/07/04 14:46:44.303000000 +09:00'
  FROM DUAL;

-- 현재 날짜와 시간 - 형식 지정
SELECT TO_CHAR(SYSDATE,      'YYYY-MM-DD AM HH:MI:SS')
     , TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')
  FROM DUAL;

-- 문자로 된 날짜/시간을 실제 날짜/시간 타입으로 변환하기
SELECT TO_DATE('23/07/04')              -- '년/월/일' 형식으로 해석
     , TO_DATE('23/07/04', 'DD/MM/YY')  -- '일/월/년' 형식으로 해석
  FROM DUAL;

-- 예제 데이터 작성
DROP TABLE EXAMPLE_T;
CREATE TABLE EXAMPLE_T (
    DT1 DATE
  , DT2 TIMESTAMP
);
INSERT INTO EXAMPLE_T(DT1, DT2) VALUES(SYSDATE, SYSTIMESTAMP);
COMMIT;

-- DT1이 '23/07/04'인 데이터를 조회하기(안 됨)
SELECT *
  FROM EXAMPLE_T
 WHERE DT1 = '23/07/04';

-- DT1이 '23/07/04'인 데이터를 조회하기(안 됨)
SELECT *
  FROM EXAMPLE_T
 WHERE DT1 = TO_DATE('23/07/04', 'YY/MM/DD');

-- DT1이 '23/07/04'인 데이터를 조회하기(됨)
SELECT *
  FROM EXAMPLE_T
 WHERE TO_DATE(DT1, 'YY/MM/DD') = TO_DATE('23/07/04', 'YY/MM/DD');

'DB' 카테고리의 다른 글

SQL응용_문제  (0) 2023.09.30
SELECT 실행 순서  (0) 2023.09.30
DQL 예제(hr)  (0) 2023.09.30
DML(학생,교수,강의,수강신청,과목)  (0) 2023.09.30
DDL(국가,선수,일정,종목)  (0) 2023.09.30