오라클 사용할 때 필수로 숙지해야 될 게 바로
날짜 이용과 조작일 거예요.
날짜에 대해 간단하게 정리합니다.
■ SYSDATE
쿼리문을 실행하는 순간의 날짜와 시간, 분, 초를 알려줍니다.
조회하면 기본적으로 「년-월-일 시:분:초」로 표시됩니다.
자료형은 DATE 이며 문자열로 표현하기 위해서는
문자열 변환 함수 TO_CHAR 를 사용해야 됩니다.
표현 → TO_CHAR(SYSDATE,'날짜 포맷')
반대로
문자열을 날짜형으로 변형할 때는 TO_DATE('날짜 문자열','날짜 포맷')
표현 → TO_DATE('2021-04-05','YYYY-MM-DD')
■ 날짜 포맷
YYYY : 네자리 년도 , 2020 , 2021 , 2022 ....
YY : 두자리 년도 . 20 , 21 ,22 ...
MM : 월 . 01 , 02 .. 12
DD : 일자 . 01 , 02 .. 31
HH : 시간 . 01 , 02 .. 12
HH24 : 24시간 . 00, 02 ... 23
MI : 분 . 00 . 01 .. 59
SS : 초 . 00 , 01 .. 59
■ 날짜 포맷을 이용하기
원하는 날짜 포맷을 이용해서 맘대로 표현할 수 있습니다.
날짜 포맷 문자 외에는 원하시는 문자를 넣으시면 됩니다.
YYYY-MM-DD → 2021-04-05
YYYY/MM/DD → 2021/04/05
YYYY년 MM월 DD일 → 2021년 04월 05일
YYYY년 MM월 DD일 HH24시 MI분 SS초 → 2021년 04월 05일 14시 40분 59초
등등..
SELECT '날짜 포맷 알아보기' -- 1) 쿼리 실행된 날짜 → 2021-04-05 , TO_CHAR(SYSDATE,'YYYY-MM-DD') -- 2) 쿼리 실행된 날짜 → 21-04-05 , TO_CHAR(SYSDATE,'YY-MM-DD') -- 3) 쿼리 실행된 일시 → 2021-04-05 02:40:59 , TO_CHAR(SYSDATE,'YYYY-MM-DD HH:MI:SS') -- 4) 쿼리 실행된 24시간 일시 → 2021-04-05 14:40:59 , TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') FROM DUAL |
■ 날짜 연산 - 일자
며칠 뒤 , 며칠 전 날짜 알아보기
▩ 공식
날짜 +/- 숫자 = 날짜의 숫자 전과 후 경과된 날짜
날짜1 - 날짜2 = 숫자 (날짜1에서 날짜2까지의 경과 일자)
날짜1 + 날짜2 = 계산 불능
예를 들어
2021-04-05 + 2021-04-05 = 4042-08-10
이런 계산은 사람만이 생각으로 가능하지만 컴퓨터는 불가능합니다.^^;;
SELECT '날짜 연산 알아보기' -- 1) 쿼리 실행된 날짜 → 2021-04-05 , TO_CHAR(SYSDATE,'YYYY-MM-DD') -- 2) 쿼리 실행된 날짜 + 1일 → 2021-04-06 , TO_CHAR(SYSDATE + 1 ,'YYYY-MM-DD') -- 3) 쿼리 실행된 날짜 + 10일 → 2021-04-15 , TO_CHAR(SYSDATE + 10 ,'YYYY-MM-DD') -- 4) 쿼리 실행된 날짜 - 1일 → 2021-04-04 , TO_CHAR(SYSDATE - 1 ,'YYYY-MM-DD') -- 5) 쿼리 실행된 날짜 - 100일 → 2020-12-26 , TO_CHAR(SYSDATE - 100 ,'YYYY-MM-DD') -- 6) 날짜 - 날짜 . 2021-04-05 - 2021-04-01 → 4 , TO_DATE('2021-04-05','YYYY-MM-DD') - TO_DATE('2021-04-01','YYYY-MM-DD') -- 7) 날짜 - 날짜 . 2021-04-01 - 2021-04-05 → -4 , TO_DATE('2021-04-01','YYYY-MM-DD') - TO_DATE('2021-04-05','YYYY-MM-DD') FROM DUAL |
■ 날짜 연산 - 초단위 연산
★ 초단위 표현 1분 : 60초 1시간 : 60초 × 60 = 3600초 하루 24시간 : 60초 × 60 × 24시간 = 86400초 SELECT '날짜 초단위 연산 알아보기' -- 1) 쿼리 실행된 날짜 → 2021-04-05 , TO_CHAR(SYSDATE,'YYYY-MM-DD') -- 2) 쿼리 실행된 일시 → 2021-04-05 02:40:10 , TO_CHAR(SYSDATE,'YYYY-MM-DD HH:MI:SS') -- 3) 쿼리 실행된 24 일시 → 2021-04-05 14:40:10 , TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') -- 4) 1초 뒤 → 2021-04-05 14:40:11 , TO_CHAR(SYSDATE + 1/(60×60×24),'YYYY-MM-DD HH24:MI:SS') -- 5) 1초 전 → 2021-04-05 14:40:09 , TO_CHAR(SYSDATE - 1/(60×60×24),'YYYY-MM-DD HH24:MI:SS') -- 6) 1분 뒤 → 2021-04-05 14:41:10 , TO_CHAR(SYSDATE + 1/(60×24),'YYYY-MM-DD HH24:MI:SS') -- 7) 1시간 뒤 → 2021-04-05 15:40:10 , TO_CHAR(SYSDATE + 1/(24),'YYYY-MM-DD HH24:MI:SS') -- 8) 2초 뒤 → 2021-04-05 14:40:12 , TO_CHAR(SYSDATE + 2/(60×60×24),'YYYY-MM-DD HH24:MI:SS') -- 9) 2초 전 → 2021-04-05 14:40:08 , TO_CHAR(SYSDATE - 2/(60×60×24),'YYYY-MM-DD HH24:MI:SS') -- 10) 2분 뒤 → 2021-04-05 14:42:10 , TO_CHAR(SYSDATE + 2/(60×24),'YYYY-MM-DD HH24:MI:SS') -- 11) 2시간 뒤 → 2021-04-05 17:40:10 , TO_CHAR(SYSDATE + 2/(24),'YYYY-MM-DD HH24:MI:SS') FROM DUAL |
■ ADD_MONTHS
날짜에서 지정된 개월수만큼 경과된 일자를 확인합니다.
ADD_MONTHS(날짜, 개월수)
SELECT '날짜 함수들 사용' ,SYSDATE -- 2021/04/05 02:40:10 -- 1) 3개월 뒤 날짜 → 2021/07/05 02:40:10 ,ADD_MONTHS(SYSDATE,3) -- 2) 3개월 전 날짜 → 2021/01/05 02:40:10 ,ADD_MONTHS(SYSDATE,-3) -- 3) 위 결과를 보기 좋게 일자로 변황 → 2021-01-05 ,TO_CHAR(ADD_MONTHS(SYSDATE,-3),'YYYY-MM-DD') FROM DUAL |
■ NEXT_DAY
날짜 이후 지정된 다음 요일이 되는 일자를 확인합니다.
NEXT_DAY(날짜,'요일')
▩ 요일 표현
한글 : 토요일 또는 토
영문 : SUNDAY 또는 SUM (오라클 영문 설치 버전)
숫자 : 일 월 화 수 목 금 토 순으로 숫자 1 2 3 ... 7
1 : 일요일
2 : 월요일
3 : 화요일
4 : 수요일
5 : 목요일
6 : 금요일
7 : 토요일
SELECT '날짜 함수들 사용' ,SYSDATE -- 2021/04/05 02:40:10 -- 1) 오늘 이후 토요일 → 2021/04/10 02:40:10 ,NEXT_DAY(SYSDATE,'토요일') -- 2) 오늘 이후 월요일 → 2021/01/12 02:40:10 ,NEXT_DAY(SYSDATE,'월') -- 3) 오늘 이후 7 : 토요일 → 2021/01/10 02:40:10 ,NEXT_DAY(SYSDATE,7) -- 4) 위의 결과를 보기 좋게 일자로 변환 → 2021-01-10 ,TO_CHAR(NEXT_DAY(SYSDATE,7),'YYYY-MM-DD') FROM DUAL |
■ LAST_DAY
지정된 날짜에서 해당 달의 마지막 일자를 확인합니다.
LAST_DAY(날짜)
날짜 값으로 DATE 자료형과 문자열 모두 사용 가능합니다.
SELECT '날짜 함수들 사용' ,SYSDATE -- 2021/04/05 02:40:10 -- 1) 2021년 04월의 마지막 날짜 → 2021/04/30 02:40:10 ,LAST_DAY(SYSDATE) -- 2) 2021년 01의 마지막 날짜 → 2021/01/31 00:00:00 ,LAST_DAY('20210115') -- 3) 위의 결과를 보기좋게 일자로 변환 → 2021-01-31 ,TO_CHAR(LAST_DAY('20210115'),'YYYY-MM-DD') FROM DUAL |
■ MONTHS_BETWEEN
두개의 날짜 사이의 개월수를 확인합니다.
MONTHS_BETWEEN(날짜1,날짜2)
날짜1을 기준으로 계산되므로
날짜2가 나중 날짜면 - 값 , 이전 날짜면 + 값으로 표시됩니다.
날짜1과 날짜 2가 만약에 시:분:초 차이가 있다면 소수점 값으로 표시됩니다.
그리고 날짜 값으로 DATE 자료형과 문자열 모두 사용 가능합니다.
SELECT '날짜 함수들 사용' ,SYSDATE -- 2021/04/05 02:40:10 -- 1) 2021년 04월에서 2021년 01월까지 개월수 → 3 ,MONTHS_BETWEEN('20210401','20210101') -- 2) 2021년 01월에서 2021년 04월까지 개월수 → -3 ,MONTHS_BETWEEN('20210101','20210401') -- 3) SYSDATE에서 2021년 04월까지 개월수 →3.323234232423 ,MONTHS_BETWEEN(SYSDATE,'20210101') FROM DUAL |
■ TRUNC를 이용한 날짜 버림
SELECT '날짜 함수들 사용' ,SYSDATE -- 2021/04/05 02:40:10 -- 1) 년도까지만 값을 유지 나머지 다 버림 → 2021/01/01 00:00:00 ,TRUNC(SYSDATE,'YYYY') -- 2) 월까지만 값을 유지 나머지 다 버림 → 2021/04/01 00:00:00 ,TRUNC(SYSDATE,'MM') -- 3) 일까지만 값을 유지 나머지 다 버림 → 2021/04/05 00:00:00 ,TRUNC(SYSDATE,'DD') -- 4) 시까지만 값을 유지 나머지 다 버림 → 2021/04/05 02:00:00 ,TRUNC(SYSDATE,'HH24') -- 5) 분까지만 값을 유지 나머지 다 버림 → 2021/04/05 02:40:00 ,TRUNC(SYSDATE,'MI') FROM DUAL |
감사합니다.
'IT > PROGRAM' 카테고리의 다른 글
IntelliJ IDEA Community를 이용한 Springboot 개발 시작 . 스프링부트란 (3) | 2021.06.07 |
---|---|
빠른 자바 개발도구 IntelliJ IDEA 설치하기 . 이클립스와 비교 (0) | 2021.06.01 |
JAVA(자바)를 이용한 JSON 데이터 보내기 응답 받기 . HTTP POST webhook이용 (0) | 2021.03.17 |
리눅스 CentOS8 PYTHON 3 (파이썬) 설치하기 (2) | 2021.03.05 |
JSON란? JAVA(자바)에서 JSON 데이타 만들기 (4) | 2021.02.10 |
댓글