728x90
반응형
Postgres만 쓰다가 오라클을 쓰려고 하니 날짜관련 함수가 기억 안나서, 블로그에 정리해둔 게 있나 찾아보니
없어서 쓰는 오라클 날짜관련 함수 정리글..
참조문서 ( 오라클 튜토리얼 )
https://www.oracletutorial.com/oracle-date-functions/
SYSDATE
시스템의 현재시간을 date타입으로 가져옴. postgresql과는 다르게 dual 테이블을 지정해줘야함.
기본문법
SELECT SYSDATE AS "현재일자" FROM dual;
--결과 ( date타입 )
--2022-07-04 20:32:11.000
SYSDATE의 문자열 타입 변환
SYSDATE는 기본적으로 date타입으로 현재시간을 리턴해주기 때문에, 이를
문자열로 변환하기 위해서는 TO_CHAR함수로 한번 묶어주어야 한다.
SELECT TO_CHAR(SYSDATE) AS "현재일자" FROM dual;
--결과 ( 문자열 타입 )
--22/07/04
이렇게 TO_CHAR으로 묶어주면 문자열타입이 되고, 결과값도 22/07/04로 조금 바뀌었다.
하지만 보통 사람들은 2022-07-04와 같은 포맷을 많이 쓰기 때문에, 포맷에 대해 알아보자.
- 자주 쓰이는 포맷
연도-월-일-시간-분-초 : YYYY-MM-DD-HH-MI-SS
연도-월-일 : 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
위의 자주 쓰이는 포맷은 진짜 그냥 자주 쓰이는 포맷이다. ( 내 기준.. )
상황에 따라 아래에 있는 개별 포맷을 조합하여 쓰면 된다. 그냥 나열만 해주면 됨...
--연/월/일만 SELECT
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') AS "현재일자" FROM DUAL;
--2022-07-04
--연/월/일/시간/분/초 SELECT
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD-HH-MI-SS') AS "현재일자" FROM DUAL;
-- 2022-07-04-20-15-46
아래는 자주 쓰이는 SYSDATE를 활용한 시간 구하는 쿼리문
오늘일자의 여러 포맷
--(1) 쿼리 실행된 날짜 → 2022-07-04
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') AS "현재일자" FROM DUAL;
--(2) 쿼리 실행된 날짜 → 22-07-04
SELECT TO_CHAR(SYSDATE,'YY-MM-DD') AS "현재일자" FROM DUAL;
--(3) 쿼리 실행된 일시 → 2022-07-04 20:38:25
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH:MI:SS') AS "현재일자" FROM DUAL;
--(4) 쿼리 실행된 24시간 일시 → 2022-07-04 20:40:30
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') AS "현재일자" FROM DUAL;
오늘일자의
--(1) 쿼리 실행된 날짜 → 2022-07-04
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') AS "현재일자" FROM DUAL;
--(2) 쿼리 실행된 날짜 + 1일 → 2022-07-05
SELECT TO_CHAR(SYSDATE + 1 ,'YYYY-MM-DD') AS "계산된일자" FROM DUAL;
--(3) 쿼리 실행된 날짜 - 1일 → 2022-07-03
SELECT TO_CHAR(SYSDATE - 1 ,'YYYY-MM-DD') AS "계산된일자" FROM DUAL;
--(4) 쿼리 실행된 날짜 + 10일 → 2022-07-14
SELECT TO_CHAR(SYSDATE + 10 ,'YYYY-MM-DD') AS "계산된일자" FROM DUAL;
--(5) 쿼리 실행된 날짜 - 10일 → 2022-06-24
SELECT TO_CHAR(SYSDATE - 10 ,'YYYY-MM-DD') AS "계산된일자" FROM DUAL;
--(6) 쿼리 실행된 날짜 + 100일 → 2022-10-12
SELECT TO_CHAR(SYSDATE + 100 ,'YYYY-MM-DD') AS "계산된일자" FROM DUAL;
--(7) 쿼리 실행된 날짜 - 100일 → 2022-03-26
SELECT TO_CHAR(SYSDATE - 100 ,'YYYY-MM-DD') AS "계산된일자" FROM DUAL;
--(8) 날짜(2022-07-04) - 날짜(2022-07-09) → -5
SELECT
TO_DATE('2022-07-04','YYYY-MM-DD') - TO_DATE('2022-07-09','YYYY-MM-DD') AS "계산된일자"
FROM DUAL;
--(1) 7개월 뒤 날짜 → 2023-02-04 20:50:35.000
SELECT ADD_MONTHS(SYSDATE,7) AS "계산된일자" FROM DUAL;
--(2) 4개월 전 날짜 → 2022-03-04 20:52:52.000
SELECT ADD_MONTHS(SYSDATE,-4) AS "계산된일자" FROM DUAL;
-- TO_CHAT함수를 이용하여 년도/월/일만 추출 → 2023-02-04
SELECT TO_CHAR(ADD_MONTHS(SYSDATE,7),'YYYY-MM-DD') AS "계산된일자" FROM DUAL;
728x90
반응형
'데이터베이스 > Oracle' 카테고리의 다른 글
[Oracle] 오라클 SUBSTR, SUBSTRB 함수를 사용하여 문자열 자르기 (0) | 2022.07.09 |
---|---|
[Oracle] 오라클 TRIM, LTRIM, RTRIM 함수를 사용하여 공백 및 반복, 특정문자 제거해보자. (0) | 2022.07.09 |
[Oracle] 오라클 프로시저(Procedure) 생성 및 사용방법 ( DBeaver 활용 ) (0) | 2022.06.03 |
[Oracle] 프로시저 호출 에러 ( SQL Error [900] [42000]: ORA-00900: invalid SQL statement ) (0) | 2022.06.03 |
[Oracle] 오라클에서의 사용자와 스키마에 대한 정리 (0) | 2022.05.06 |