|

오라클 ORACLE SYSDATE 함수 사용방법

오라클의 날짜 함수인 SYSDATE 사용법에 대해 여러가지로 조사하고 배우면서, ORACLE SYSDATE 에 관한 글을 작성한다. SYSDATE는 현재 시스템의 날짜와 시간을 반환하는 함수이다. 날짜와 관련된 연산을 할 때 사용되는 함수이다.
※ GPT와 오라클 SYSDATE 사용법 글을 읽으며 참고하여 작성

1.ORACLE SYSDATE 함수

1-1. 기본 사용법 – 오늘 날짜 구하기

SYSDATE는 현재 날짜와 시간을 반환하는 함수이다. 이를 통해 현재 날짜를 간단히 조회할 수 있다.

SELECT SYSDATE FROM DUAL;
  • 위 쿼리를 실행하면 현재 날짜와 시간이 DATE 형식으로 반환합니다.
  • dual은 Oracle에서 임시 테이블로 사용되며, 실제 데이터를 사용하지 않고 함수나 계산 결과를 얻는 데 사용된다.

1-2. 날짜와 시간 형식 지정하기 / 원하는 날짜 포맷으로 데이터 가져오기

SYSDATE는 기본적으로 DATE 타입을 반환합니다. DATE 타입은 날짜와 시간을 포함하며, 그 형식은 YYYY-MM-DD HH24:MI:SS입니다. 하지만, 반환된 날짜를 TO_CHAR 함수와 함께 사용하여 원하는 형식으로 변경할 수 있다.

TO_CHAR 함수를 사용하면 반환되는 날짜의 형식을 원하는 대로 조정할 수 있다.

SELECT TO_CHAR(SYSDATE,'YYYY') AS 연도 FROM DUAL;  -- 연도
SELECT TO_CHAR(SYSDATE,'MM') AS 월 FROM DUAL;      -- 월
SELECT TO_CHAR(SYSDATE,'DD') AS 일 FROM DUAL;      -- 일
SELECT TO_CHAR(SYSDATE,'HH24') AS 시간 FROM DUAL;  -- 시간 (24시간제)
SELECT TO_CHAR(SYSDATE,'MI') AS 분 FROM DUAL;      -- 분
SELECT TO_CHAR(SYSDATE,'SS') AS 초 FROM DUAL;      -- 초

SELECT TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS') AS 전체날짜 FROM DUAL; -- 전체날짜
  • 위 쿼리들을 통해 연도, 월, 일, 시간, 분, 초 등을 각각 추출할 수 있다.
  • TO_CHAR 함수를 이용하면 날짜 및 시간을 특정 형식으로 변환하여 사용할 수 있다.

1-3. 날짜 연산을 통한 원하는 날짜 가져오기

SYSDATE는 날짜와 시간 데이터를 반환하므로, SYSDATE를 기준으로 날짜를 더하거나 빼는 연산을 통해, 예를 들어 하루 전, 하루 후, 3일 전 등의 날짜를 구할 수 있다.
예를 들어, 특정 날짜로부터 몇 일 전/후를 계산하거나, 현재 날짜와 다른 날짜의 차이를 계산할 수 있다.

SELECT SYSDATE - 1 AS 하루전 FROM DUAL;  -- 하루 전 날짜
SELECT SYSDATE + 1 AS 내일 FROM DUAL;    -- 내일 날짜


예: 3일 전 날짜 구하기
SELECT SYSDATE - 3 FROM dual;

예: 5일 후 날짜 구하기
SELECT SYSDATE + 5 FROM dual;

SELECT TO_CHAR(SYSDATE - 1, 'YYYY-MM-DD') AS 하루전 FROM DUAL;
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') AS 오늘 FROM DUAL;
SELECT TO_CHAR(SYSDATE + 1, 'YYYY-MM-DD') AS 내일 FROM DUAL;

SELECT TO_CHAR(SYSDATE - 1, 'YYYY-MM-DD') AS 하루전,
       TO_CHAR(SYSDATE, 'YYYY-MM-DD') AS 오늘,
       TO_CHAR(SYSDATE + 1, 'YYYY-MM-DD') AS 내일  FROM DUAL;
  • 날짜 연산을 통해 SYSDATE로부터 특정 일수를 더하거나 빼서 원하는 날짜를 쉽게 구할 수 있습니다.

1-4. 한 달 전, 1년 전 날짜 가져오기

월 단위나 연 단위로 날짜를 계산할 때는 ADD_MONTHS 함수를 사용합니다. 이 함수는 주어진 날짜에서 월을 더하거나 빼는 데 유용하다.

SELECT TO_CHAR(ADD_MONTHS(SYSDATE, -1), 'YYYY-MM-DD') AS 한달전 FROM DUAL;   -- 한 달 전
SELECT TO_CHAR(ADD_MONTHS(SYSDATE, -12), 'YYYY-MM-DD') AS 일년전 FROM DUAL;  -- 1년 전
SELECT TO_CHAR(ADD_MONTHS(SYSDATE, +1), 'YYYY-MM-DD') AS 한달후 FROM DUAL;   -- 한 달 후
SELECT TO_CHAR(ADD_MONTHS(SYSDATE, +12), 'YYYY-MM-DD') AS 일년후 FROM DUAL;  -- 1년 후
  • ADD_MONTHS 함수를 사용하여 한 달 전, 1년 전 등의 날짜를 손쉽게 구할 수 있다.
  • 주의사항: 날짜가 월말일인 경우, ADD_MONTHS 함수는 계산된 날짜가 해당 월의 마지막 날로 조정될 수 있다.
SELECT ADD_MONTHS(TO_DATE('2020-03-31', 'YYYY-MM-DD'), -2) AS 두달전,
       ADD_MONTHS(TO_DATE('2020-03-31', 'YYYY-MM-DD'), -1) AS 한달전,
       ADD_MONTHS(TO_DATE('2020-03-31', 'YYYY-MM-DD'), +1) AS 한달후,
       ADD_MONTHS(TO_DATE('2020-03-31', 'YYYY-MM-DD'), +2) AS 두달후
FROM DUAL;
  • 예를 들어 2020년 3월 31일에서 한 달 후는 4월 30일이 된다. 월의 마지막 날짜가 달라질 수 있음을 유의하자.

1-5. 이번 달 시작 일자, 마지막 일자 가져오기

이번 달의 시작일과 마지막 일자를 구하려면, LAST_DAY 함수와 날짜 조합을 활용할 수 있다.

SELECT TO_CHAR(SYSDATE, 'YYYY-MM') || '-01' AS 이번달시작일 FROM DUAL;  -- 이번 달 첫 날
SELECT TO_CHAR(LAST_DAY(SYSDATE), 'YYYY-MM-DD') AS 이번달마지막일 FROM DUAL;  -- 이번 달 마지막 날

SELECT TO_CHAR(SYSDATE, 'YYYY-MM') || '-01' AS 이번달시작일,
       TO_CHAR(LAST_DAY(SYSDATE), 'YYYY-MM-DD') AS 이번달마지막일
FROM DUAL;
  • SYSDATE에서 월을 추출하고, 문자열을 추가하여 이번 달의 첫 번째 날짜를 구할 수 있다.
  • LAST_DAY 함수는 주어진 날짜가 포함된 달의 마지막 날짜를 반환합니다.

2.ORACLE SYSDATE 함수 결합 응용

2-1. SYSDATETRUNC 함수 결합

TRUNC 함수는 날짜를 특정 단위로 잘라주는 함수입니다. 이를 SYSDATE와 결합하여 오늘 날짜의 시작 시간이나 특정 시간 단위로 날짜를 정리할 수 있습니다.

예: 오늘 날짜의 00:00 시각 구하기

SELECT TRUNC(SYSDATE) FROM dual;
  • TRUNC(SYSDATE)는 오늘 날짜의 00:00:00 시각을 반환합니다.

예: 오늘의 월 첫날 구하기

SELECT TRUNC(SYSDATE, 'MM') FROM dual;
  • TRUNC(SYSDATE, 'MM')는 이번 달의 첫 번째 날짜인 00:00 시각을 반환한다.

예: 현재 주의 첫날 구하기

SELECT TRUNC(SYSDATE, 'SUNDAY') FROM dual;
  • TRUNC(SYSDATE, 'SUNDAY')는 현재 주의 일요일 날짜를 반환한다.

2-2. SYSDATEINTERVAL 사용

Oracle에서는 INTERVAL 키워드를 사용하여 날짜와 시간 간의 연산을 더욱 쉽게 처리할 수 있다.

예: 1시간 후의 날짜 구하기

SELECT SYSDATE + INTERVAL '1' HOUR FROM dual;
  • SYSDATE + INTERVAL '1' HOUR는 현재 시간에서 1시간 후의 날짜와 시간을 반환한다.

예: 30분 전 날짜 구하기

SELECT SYSDATE - INTERVAL '30' MINUTE FROM dual;
  • SYSDATE - INTERVAL '30' MINUTE는 현재 시간에서 30분 전의 날짜와 시간을 반환한다.

결론

Oracle의 SYSDATE는 매우 유용한 함수로, 날짜와 시간 관련 작업에서 광범위하게 사용된다. 이정도만 알면 오라클에서 SYSDATE 를 사용하느데 있어 딱히 어려울 것은 없을 것이라 본다.

Similar Posts

답글 남기기