코딩 개발/ORACLE

ORACLE - 시간 등록 및 검색(feat. SYSDATE, to_date)

호소세 2023. 6. 15. 20:09
728x90
반응형

Oracle에서 시간 데이터를 저장하기 위한 방법을 알아보도록 합시다.

 

1. 현재시간 확인하는 법

SELECT SYSDATE FROM DUAL;

 데이터 베이스 시스템의 현재 날짜와 시간을 가져오는 함수(SYSDATE)입니다.

가상의 테이블인 DUAL 테이블을 이용해서 시간을 가져왔습니다.

현재 날짜와 시간

2. 원하는 시간 포맷으로 시간 확인하는 법 (년, 월, 일, 시, 분, 초)

'. / -' 등으로 나누는 날짜 포맷

SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'YYYY.MM.DD') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'YYYY/MM/DD') FROM DUAL;

아래와 같이 값이 나오게 됩니다.

2023-06-15
2023.06.15
2023/06/15

 

시간 확인 및 월(한국어) 표시

SELECT TO_CHAR(SYSDATE,'MON DD, YYYY HH:MI:SS AM') FROM DUAL;
 6월  15, 2023 07:43:40 오후

신기하게(?)도 Locale을 한국으로 지정해 놓으면 한국어로 친절하게 나오더라고요.

그래서 준비했습니다. 한국어 말고 영어로는 어떻게 바꾸는지 알아볼까요.

 

시간 확인 및 월(영어) 표시

SELECT TO_CHAR(SYSDATE,'MON DD, YYYY HH:MI:SS AM','NLS_DATE_LANGUAGE=ENGLISH') FROM DUAL;

표기법 포맷 뒤에 있는 조건에 'NLS_DATE_LANGUAGE=ENGLISH' 조건을 넣으면 영어가 나오게 됩니다!

 JUN 15, 2023 07:46:30 PM

이런 식으로 말이죠.

 

요일 표시(한국어 & 영어버전)

SELECT TO_CHAR(SYSDATE,'DAY') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'DAY', 'NLS_DATE_LANGUAGE=ENGLISH') FROM DUAL;
목요일
THURSDAY

DAY 포맷을 사용하면 요일이 나옵니다.

 

3. 시간 계산(년, 월, 일 덧셈, 뺄셈)

기간을 저장하고 차이를 보는 것을 알아보겠습니다.

CREATE TABLE date_test(
	id VARCHAR2(100) PRIMARY KEY,
	mydate DATE NOT NULL
)

INSERT INTO date_test(id,mydate) VALUES('joy',sysdate);
INSERT INTO date_test(id,mydate) VALUES('peace',to_date('2023-1-11','YYYY-MM-DD'));
INSERT INTO date_test(id,mydate) VALUES('happy',to_date('2022-2-22','YYYY-MM-DD'));

이렇게 두 날짜를 넣어보겠습니다.

 

덧셈, 뺄셈

SELECT id,mydate,mydate-1 FROM date_test;

확인해 보시면 하루가 빠진 날짜가 나오게 됩니다.

 

덧셈도 마찬가지입니다.

또한, 두 개의 날짜 사이의 차이도 뺄셈으로 확인하면 됩니다. 소수점 부분을 제거하고 싶으면 trun을 이용합니다.

(truncate : 길이를 줄이다 [짧게 하다])

SELECT id,mydate,trunc(sysdate-mydate) FROM date_test;

이런 식으로 확인합니다. 

 

월, 년도 비교하기

-- 몇개월 경과 months_between()
SELECT id,mydate,trunc(months_between(sysdate,mydate)) FROM date_test;
-- 몇년 경과 months_between()/12 
SELECT id,mydate,trunc(months_between(sysdate,mydate)/12) FROM date_test;

months_between을 이용하여 월과 연도를 비교할 수 있습니다.

년도를 비교하는 함수는 따로 없지만 12만 나누면 년도를 알 수 있습니다.

아마도 월을 비교하는 것은 일수가 매달 다르기 때문에 생겨났겠죠?

 

월 비교
년도 비교

 

소감

오늘은 ORACLE로 시간을 다루는 법을 알아보았습니다. 요새 AI 때문에 ORACLE의 주가가 많이 오르고 있더라고요. 이유는 잘 모르겠지만 제가 사용하고 있는 ORACLE이 승승장구했으면 좋겠습니다.

ORACLE의 주주가 아니고 절대 투자 권유의 글이 아닙니다. 하하하. 🤣

오늘은 같이 하는 동료와의 대화로 오늘의 글을 마무리해보려고 합니다.

 

제가 같이 하는 동료분은 운동을 좋아하시는 분인데, 제가 이런 말씀을 드렸습니다.

호소세 : 운동을 할 때 다른 사람들이 볼까봐 약간 .... 부끄러워요.

동료분 : 남의 시선을 신경쓰지마세요. 자신만을 바라봐요.

이때 또 느꼈습니다.

어떠한 일을 할 때 일의 과정에서 자신을 속이지 않고 한다면 그 일은 아주 위대한 일이 될 것이라는 것을요. 자기 자신을 속이지 않고 과정을 지속하면 더 멋진 내일의 자신을 만날 수 있지 않을까라는 깊은 생각을 하게 해 주었습니다.

또한, 남들과 비교하지 않는 삶을 살면서 행복을 추구하고 싶다는 생각도 하게 되었습니다.

감사합니다.

반응형