오라클 날짜 계산 (년, 월, 일, 시간 더하기/빼기)
1. 연도
날짜를 추출하는 extract 함수를 이용한다.
select to_char(sysdate,'YYYY-MM-DD') now
, extract(year from sysdate)-3 before
, extract(year from sysdate) today
, extract(year from sysdate)+3 later
from dual
2. 월
월을 계산하는 함수는 "ADD_MONTHS(기준일자, 더할값)"를 사용한다.
sysdate를 사용하여 일자를 기준으로 계산할 수도 있다. (systimestamp도 동일)
※ 월,일,시간의 경우 extract를 사용하면 현재 날짜는 정확히 불러오지만, 계산은 부정확할 수 있으므로 적절한 함수를 이용해야한다.
(예로, 3월일 때 extract를 통해 3을 빼면 12월이 아닌, 0으로 표기된다. (wrong 출력값 참고) )
select to_char(sysdate,'YYYY-MM-DD') now
, to_char(sysdate-90,'MM') before --90일 전
, to_char(ADD_MONTHS(sysdate,-3),'MM') before_2 --3달 전
, to_char(sysdate,'MM') today --현재
, to_char(ADD_MONTHS(sysdate,3),'MM') later --3달 후
, extract(month from sysdate)-3 wrong --잘못된 사용법
from dual
3. 일
월 계산과 마찬가지로 sysdate를 사용하여 일자를 기준으로 계산할 수 있다. (systimestamp도 동일)
"Next_day(기준일자,요일)" 함수를 이용하여 다음 지정요일이 며칠인지 알 수 있다.
아래 예시에서는 '월요일'로 지정하였으니, 다음 월요일인 20일을 출력한다.
DB 타임존이나 세팅언어이 다르다면 '월요일'을 'Monday'와 같이 변경하는 등의 수정이 필요할 수 있다.
select to_char(sysdate,'YYYY-MM-DD') now
, to_char(sysdate-3,'DD') before --3일전
, to_char(sysdate,'DD') today --현재
, to_char(sysdate+3,'DD') later --3일후
, to_char(NEXT_DAY(sysdate,'월요일'),'DD') next_day --다음 월요일
from dual
4. 시간
시 : sysdate + nn / 24
분 : sysdate + nn / (24*60)
초 : sysdate + nn / (24*60*60)
(3.일 항목에서 계산해본 바와 같이 nn은 일자를 의미하므로, 시분초는 각각 24, 24*60, 24*60*60으로 나누어야한다.)
sysdate를 systimestamp로 변경해도 동일한 결과를 얻을 수 있다.
select to_char(sysdate,'HH:Mi:SS') now
, to_char(sysdate+3/24,'HH:Mi:SS') hour --3시간 후
, to_char(sysdate+3/(24*60),'HH:Mi:SS') minute --3분 후
, to_char(sysdate+3/(24*60*60),'HH:Mi:SS') second --3초 후
from dual
끝.
'개발하는 '정' > DB' 카테고리의 다른 글
MySql Workbench 설치 및 접속 (0) | 2023.08.08 |
---|---|
[Oracle] Order by 1, 2, ... 구문의 의미와 사용 방법 (0) | 2023.06.07 |
ORACLE 최근 3개년 데이터 (+ 없으면 0으로 출력) (0) | 2023.01.18 |
오라클 테이블 권한 조회 (0) | 2022.12.22 |
MSSQL SSMS 설치 (SQL Server Management Studio 설치) (0) | 2022.12.08 |
댓글