오라클(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
→ DATE
char_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
→ TIMESTAMP
varchar_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
→ DATE
ts
TIMESTAMP
타입을 DATE
로 변환하면 소수초 정보가 사라지고 날짜+시간까지만 유지 된다.
SELECT
id,
ts,
CAST(ts AS DATE) AS ts_to_date
FROM sample_datetime;
결과: 2025-04-04 14:30:00
(DATE 타입)
TIMESTAMP
→ VARCHAR2
ts
TO_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
→ VARCHAR2
dt
이건 단순히 날짜(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