오라클(Oracle)에서 자주 사용하는 날짜 및 시간 관련 타입들인 CHAR, VARCHAR2, DATE, TIMESTAMP 간 변환 방법을 정리했다.
아래 예제 테이블을 기준으로 각 타입 간의 변환을 테스트할 수 있다.
CREATE TABLE sample_datetime (
id NUMBER PRIMARY KEY,
char_date CHAR(10), -- '2025-04-04'
varchar_ts VARCHAR2(19), -- '2025-04-04 14:30:00'
dt DATE,
ts TIMESTAMP
);
INSERT INTO sample_datetime (id, char_date, varchar_ts, dt, ts)
VALUES (
1,
'2025-04-04',
'2025-04-04 14:30:00',
TO_DATE('2025-04-04', 'YYYY-MM-DD'),
TO_TIMESTAMP('2025-04-04 14:30:00', 'YYYY-MM-DD HH24:MI:SS')
);
CHAR → DATEchar_date이 컬럼은 'YYYY-MM-DD' 형식의 문자열이야. TO_DATE() 함수로 DATE 타입으로 변환할 수 있다.
SELECT
id,
char_date,
TO_DATE(char_date, 'YYYY-MM-DD') AS char_to_date
FROM sample_datetime;
결과: 2025-04-04 00:00:00 형태의 DATE 데이터 반환
VARCHAR2 → TIMESTAMPvarchar_ts이 컬럼은 'YYYY-MM-DD HH24:MI:SS' 형식의 문자열이야. TO_TIMESTAMP()로 TIMESTAMP로 변환 가능하다.
SELECT
id,
varchar_ts,
TO_TIMESTAMP(varchar_ts, 'YYYY-MM-DD HH24:MI:SS') AS varchar_to_ts
FROM sample_datetime;
결과: 2025-04-04 14:30:00.000000 형태의 TIMESTAMP 반환
TIMESTAMP → DATEtsTIMESTAMP 타입을 DATE로 변환하면 소수초 정보가 사라지고 날짜+시간까지만 유지 된다.
SELECT
id,
ts,
CAST(ts AS DATE) AS ts_to_date
FROM sample_datetime;
결과: 2025-04-04 14:30:00 (DATE 타입)
TIMESTAMP → VARCHAR2tsTO_CHAR() 함수를 이용해 문자열로 바꿀 수 있어. 출력 형식도 지정 가능.
SELECT
id,
ts,
TO_CHAR(ts, 'YYYY-MM-DD HH24:MI:SS') AS ts_to_char
FROM sample_datetime;
결과: '2025-04-04 14:30:00' (VARCHAR2 타입)
DATE → VARCHAR2dt이건 단순히 날짜(DATE)를 보기 좋은 문자열로 바꿈.
SELECT
id,
dt,
TO_CHAR(dt, 'YYYY-MM-DD') AS date_to_char
FROM sample_datetime;
결과: '2025-04-04'
SELECT TO_CHAR(12345) AS number_to_char FROM DUAL;
결과: '12345'
SELECT TO_CHAR(12345.678, '99999.999') AS float_to_char FROM DUAL;
결과: '12345.678' (포맷 지정 가능)
SELECT TO_NUMBER('12345') AS char_to_number FROM DUAL;
결과: 12345