[ DB / Oracle ] 날짜 데이터 (date / timestamp)

2024. 1. 13. 13:43· LANGUAGE/└ Database

환경 : DBeaver

 

 날짜 데이터는 date / timestampe 형태를 사용한다. 




DATE




date 형태로 시간 데이터를 관리
BC 4712년 1월 1일부터 9999년 12월 31일까지 표현 가능
연, 월, 일, 시, 분, 초 까지 입력 가능
java.sql.Date 클래스와 date 형태가 호환 됨

TIMESTAMP

연도, 월, 일, 시, 분, 초 + 밀리초까지 입력 가능
java.sql.Timestamp 클래스와 timestamp 형태가 호환 됨

 

 - Oracle에서 변환 명령은 to_date(값, 형식)를 사용한다.

 - 변환 형식은 

      Y(연도), M(월), D(일), HH/HH24(시간), MI(분), S(초)

 - 현재 시각을 구하고 싶을 땐 sysdate / systimestamp 를 사용하여 구한다.

 - 날짜는 더하기 빼기가 가능하다. (단위 : 일)


(참고) 이 글에서 사용될 테이블과 시퀀스 생성 구문입니다.

-- Create sequence and table
CREATE SEQUENCE project_seq;

CREATE TABLE project(
  project_id NUMBER PRIMARY KEY,
  project_name VARCHAR2(100) NOT NULL,
  project_budget NUMBER NOT NULL, 
  project_start_date DATE NOT NULL,		-- 날짜 데이터 삽입
  project_end_date DATE NOT NULL		-- 날짜 데이터 삽입
);

 

 (+) 날짜를 삽입할 땐 DATE 타입으로 선언해줘야 합니다.


데이터 삽입

-- Insert data
INSERT INTO project(project_id, project_name, project_budget, project_start_date, project_end_date)
VALUES (project_seq.nextval, 'Environmentally Friendly City Development', 5000000, '2024-03-01', '2024-12-31');

 

   (+) '2024-03-01' 과 같이 문자열 형태로 입력해도 들어가긴 한다.

 

[ to_date() ]

INSERT INTO project(project_id, project_name, project_budget, project_start_date, project_end_date)
VALUES (project_seq.nextval, 'Education Software Development', 800000, to_date('2024-04-01', 'YYYY-MM-DD'), to_date('2024-08-31', 'YYYY-MM-DD'));
INSERT INTO project(project_id, project_name, project_budget, project_start_date, project_end_date)
VALUES (project_seq.nextval, 'Health Promotion Campaign', 300000, 
        to_date('2024-05-15 12:00:00', 'YYYY-MM-DD HH24:MI:SS'),
        to_date('2024-06-30 18:00:00', 'YYYY-MM-DD HH24:MI:SS'));

 

   (+)  to_date(값, 형식) 를 활용한다.

         바꾸고자 하는 날짜, 시간을 입력하고 그에 맞는 형식을 부여한다.

   (+) 마감 일을 표현하고자 할 때 자주 사용된다. 그 때에는 대부분 분 / 초를 59:59 형태로 입력한다.

 

[현재 시간 불러오기] [덧셈 해보기]

INSERT INTO project(project_id, project_name, project_budget, project_start_date, project_end_date)
VALUES (project_seq.nextval, 'Decadal Technology Research', 2000000, 
		sysdate, -- Current timestamp 
		sysdate+30);

 

   (+) sysdate를 활용하여 현재 시각을 불러올 수 있다.

   (+) sysdate+30을 통하여 현재 날짜를 기준으로 30일 후를 출력할 수 있다.


[ 결과 확인 ]

위 삽입 코드를 순서대로 기입하였다.

 


(참고) 해당 글에서 사용한 테이블 및 시퀀스 삭제 구문입니다.

-- Drop sequence and table
DROP SEQUENCE project_seq;
DROP TABLE project;

 

 

 

 

 

 

 

개인 공부 기록용입니다:)

728x90