[Oracle] 날짜/시간 데이터 타입 변환 정리 (CHAR, VARCHAR2, DATE, TIMESTAMP)

현서의 성장일지·2025년 4월 4일
0

SQL

목록 보기
12/14

오라클(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')
);

1. CHARDATE

컬럼: 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 데이터 반환


2. VARCHAR2TIMESTAMP

컬럼: 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 반환


3. TIMESTAMPDATE

컬럼: ts

TIMESTAMP 타입을 DATE로 변환하면 소수초 정보가 사라지고 날짜+시간까지만 유지 된다.

SELECT
  id,
  ts,
  CAST(ts AS DATE) AS ts_to_date
FROM sample_datetime;

결과: 2025-04-04 14:30:00 (DATE 타입)


4. TIMESTAMPVARCHAR2

컬럼: 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 타입)


5. DATEVARCHAR2

컬럼: dt

이건 단순히 날짜(DATE)를 보기 좋은 문자열로 바꿈.

SELECT
  id,
  dt,
  TO_CHAR(dt, 'YYYY-MM-DD') AS date_to_char
FROM sample_datetime;

결과: '2025-04-04'


6. NUMBER → VARCHAR2 (정수, 실수 → 문자열)

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' (포맷 지정 가능)


7. VARCHAR2 → NUMBER (문자열 → 숫자)

SELECT TO_NUMBER('12345') AS char_to_number FROM DUAL;

결과: 12345

profile
초보 개발자의 기술 블로그

0개의 댓글