본문 바로가기

Skill Sets/Oracle

[오라클 / Oracle] 자주 이용하는 날짜 함수와 연산들(1)

SMALL

 

안녕하세요! 데코입니다!

오늘은 오라클에서 자주 이용하는 함수와 연산들을 소개하는 포스팅 하려고 합니다!

 

바로 포스팅 시작할게요! :)

 

 

 


 

 

1. 날짜 함수 소개

 

[ 1 ] TO_DATE()

TO_DATE 함수는 문자열을 날짜로 변환하는 함수입니다!

 

형식화된 날짜 문자열과 해당 날짜 형식을 함께 사용해서 표현합니다.

 

사용법 : TO_CHAR(날짜문자열, 날짜형식)

 

 

 

[ 2 ] TO_CHAR()

TO_CHAR 함수는 날짜를 문자열로 변환하는 함수입니다!

 

사용법 : TO_CHAR(날짜변수, 날짜형식)

 

 

 

[ 3 ] ADD_MONTHS()

ADD_MONTHS 함수는 주어진 날짜에 월을 더하여 계산하는 함수입니다!

 

사용법 : ADD_MONTHS(날짜변수, 월수) : 날짜변수에 월수를 더한 값을 출력 

 

 

 

[ 4 ] TRUCK()

TRUNK 함수는 주어진 날짜에서 가장 가까운 단위로 버리는 함수입니다!

단위를 적지 않으면 일 단위로 제거가 되어요!

 

사용법 : TRUNK(날짜변수, 단위)

 

 

 

[ 5 ] LAST_DAY()

LAST_DAY 함수는 주어진 날짜의 마지막 요일을 반환해 주는 함수입니다!

 

사용법 : LAST_DAY(날짜변수)

 

 

 

[ 6 ] INTERVAL

INTERVAL은 함수는 아니지만, 날짜 간의 간격을 나타내주는 데이터 유형입니다!

날짜를 계산해 줄 때 주로 이용됩니다!

 

사용법 : 날짜변수 + INTERVAL 간격.

 

 

 


 

 

2. 자주 이용하는 날짜 만들기

 

-- 2024.02.13 기준
SELECT  TRUNC(TO_DATE('2024-02-13', 'YYYY-MM-DD'), 'MONTH') AS date_2024_02_01
	, LAST_DAY(TRUNC(TO_DATE('2024-02-13', 'YYYY-MM-DD'), 'MONTH')) AS date_2024_02_29
        , TRUNC(TO_DATE('2024-02-13', 'YYYY-MM-DD'), 'MONTH') + INTERVAL '1' MONTH AS date_2024_03_01
        , LAST_DAY(TRUNC(TO_DATE('2024-02-13', 'YYYY-MM-DD'), 'MONTH') + INTERVAL '1' MONTH) AS date_2024_03_31
        , TRUNC(ADD_MONTHS(TO_DATE('2024-02-13', 'YYYY-MM-DD'), -1), 'MONTH') AS date_2024_01_01
        , LAST_DAY(TRUNC(ADD_MONTHS(TO_DATE('2024-02-13', 'YYYY-MM-DD'), -1), 'MONTH')) AS date_2024_01_31
  FROM  dual;

 

 

'2024-02-13'을 기준으로

'2024-02-01', '2024-02-29', '2024-03-01', '2024-03-31', ' 2024-01-01', '2024-01-31'을 생성하는 쿼리예요!

 - 해당일자의 첫 번째 날짜

 - 해당일자의 마지막 날짜

 - 해당일자 다음 달의 첫 번째 날짜

 - 해당일자 다음 달의  마지막 날짜

 - 해당일자 이전 달의 첫 번째 날짜

 - 해당일자 이전 달의 마지막 날짜

 


주어진 날짜를 기준으로 첫 번째 일자와 마지막 일자를 구한 기억이 많아서 참고하면 좋을 것 같아서 추가했습니다!



" TRUNC(TO_DATE('2024-02-13', 'YYYY-MM-DD'), 'MONTH') AS date_2024_02_01 "
위 코드는 '2024-02-13'을 기준으로 해당 월의 첫 번째 날짜를 구한 코드입니다! 출력으로는 '2024-02-01'을 얻게 됩니다.

 


" LAST_DAY(TRUNC(TO_DATE('2024-02-13', 'YYYY-MM-DD'), 'MONTH')) AS date_2024_02_29 "  이 부분은!
'2024-02-13'을 기준으로 해당 월의 마지막 날짜를 구한 코드입니다! LAST_DAY 함수를 사용하여 해당 월의 마지막 날짜를 얻습니다! 출력 결과로는 '2024-02-29'를 얻게 됩니다.

 


TRUNC(TO_DATE('2024-02-13', 'YYYY-MM-DD'), 'MONTH') + INTERVAL '1' MONTH AS date_2024_03_01 " 이 부분은!

'2024-02-13'을 기준으로 해당 월의 첫 번째 날짜를 구하고, 그 날짜에 1개월을 더하여 다음 달의 첫 번째 날짜를 구한 코드입니다! 출력으로는 '2024-03-01'이 됩니다.

 


LAST_DAY(TRUNC(TO_DATE('2024-02-13', 'YYYY-MM-DD'), 'MONTH') + INTERVAL '1' MONTH) AS date_2024_03_31

이 부분은!

'2024-02-13'을 기준으로 해당 월의 다음 달의 첫 번째 날짜를 구하고,

LAST_DAY 함수를 사용하여 해당 월의 마지막 날짜를 구한 코드입니다!

출력으로는  '2024-03-31'을 얻게 됩니다.

 

 


 

3. 오라클 함수 검색

 

추가적인 오라클(Oracle) 함수에 대해서 검색하고 싶으면,

오라클에서 제공하는 "SQL Language Reference"에서 참고하시면 됩니다!

아래에 링크도 같이 첨부해 둘게요!!

 

링크 : https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/index.html#Oracle%C2%AE-Database

 

SQL Language Reference

 

docs.oracle.com

 

 

검색창에 궁금한 함수를 검색하면, 설명과 같이 예시도 같이 확인할 수 있어요! :)

 


 

4. 작성 후기

 

기존에 이용하던 DB가 Sybase에서 오라클로 변경되면서

 

연산들과 함수가 조금씩 달라지더라고요!

 

쿼리를 작성할 때 WHERE문에 날짜 함수들을 많이 이용하다 보니,

 

차이점을 명확하게 구분하고자 블로그에 정리해 보았습니다!

 

앞으로도 몇 번 더 오라클 DB 쿼리에 대해서 적으려고 합니다!

 

 

설명이 어려운 부분 혹은 잘 이해가 안 가는 부분

그리고 더 궁금한 내용이 있다면

언제든지 댓글로 남겨주세요!

빠르게 궁금증을 해결해 드릴게요!

공감과 댓글은 큰 힘이 됩니다!

오늘도 블로그 방문해 주시고

포스팅 읽어주셔서 감사합니다!

 

 

LIST