개발 지식/[DBMS] Oracle

[Oracle] DML(3) - 날짜 데이터 INSERT

devGSP 2022. 6. 8. 08:00
반응형
이 게시물은 Database GUI Oracle SQL Developer의 아래 버전 정보를 기준으로 작성되었습니다.

Java(TM) 플랫폼 : 1.8.0_321
Oracle IDE : 4.1.5.21.78

 

날짜 데이터 INSERT

 

아래의 테이블이 없으면 여기를 클릭하여 테이블을 생성하고 돌아오자.

SELECT * FROM TB_EMP;

dml3_q1

 

아래 두 쿼리문을 실행해 두 데이터를 삽입해 보자.

INSERT INTO TB_EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
     VALUES (9999, 'GSP', 'CEO', NULL, '2022/06/06', 9999, NULL, 10);
INSERT INTO TB_EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
     VALUES (1010, 'JEONGSEON', 'DESIGNER', NULL, '2022-06-06', 4000, 1500, 60);
     
SELECT * FROM TB_EMP; -- 삽입 결과 확인

dml3_q2

 

위에서 주목할 점은 날짜형 열인 HIREDATE에 들어간 날짜의 형태가 각각 '2022/06/06', '2022-06-06'으로 들어갔음에도 날짜 데이터가 성공적으로 삽입되었다는 점이다.

 

그렇다면 아래 쿼리문을 실행해 보자.

INSERT INTO TB_EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
     VALUES (1020, 'BANSEOK', 'ENGINEER', NULL, '06/06/2022', 6000, 500, 50);

 

위 쿼리를 실행하면 아래와 같은 결과 화면이 보일 것이다.

dml3_q3

 

이는 운영체제나 사용하는 기본 언어군에 따라 날짜 표기 방식이 달라 날짜 데이터 삽입 에러가 발생한 것이다. 때문에 날짜 데이터를 INSERT할 때에는 아래의 예시처럼 TO_DATE 함수를 사용하는 것이 안전하다.

 

INSERT INTO TB_EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
     VALUES (1020, 'BANSEOK', 'ENGINEER', NULL, TO_DATE('06/06/2022', 'DD/MM/YYYY'), 6000, 500, 50);

SELECT * FROM TB_EMP; -- 결과 확인

dml3_q4

반응형