본문 바로가기
Work/DataBase

[ORACLE] 오라클 날짜함수 , 형식지정

날짜 출력 (SYSDATE, SYSTIMESTAMP)

-- 오늘 날짜 출력 (YYYY/MM/DD HH:MM:SS 형식으로 나옴)

-- SYSDATE 
SELECT SYSDATE FROM DUAL;

-- 타임스탬프
SELECT SYSTIMESTAMP FROM DUAL;

-- 날짜 형식지정 
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL;

일(Date) 계산

-- 100일후 날짜 출력 
SELECT SYSDATE+100 FROM DUAL;

-- 날짜 형식지정 
SELECT TO_CHAR(SYSDATE+100,'YYYY-MM-DD') FROM DUAL;

월(Month) 계산 - ADD_MONTHS

-- 12달후 날짜 출력 
SELECT add_months(SYSDATE,12) FROM DUAL;

-- 날짜 형식지정 
SELECT TO_CHAR(add_months(SYSDATE+12),'YYYY-MM-DD') FROM DUAL;

-- 해당월에 마지막 일
SELECT LAST_DAY(SYSDATE) FROM DUAL;

요일 출력

--결과 : 화요일
select to_char(sysdate, 'day') from dual
;
--결과 : 화
select to_char(sysdate, 'dy') from dual
;
--결과 : 3 (1:일, 2:월, 3:화, 4:수, 5:목, 6:금, 7:토)
select to_char(sysdate, 'd') from dual
;

TRUNC 년,월,일 단위  (Truncate:절단하다)

-- 오늘날짜 20200217 기준 절삭시
SELECT TRUNC(SYSDATE,'Y') FROM DUAL;   --결과 2020/01/01 00:00:00
SELECT TRUNC(SYSDATE,'MM') FROM DUAL;   --결과 2020/02/01 00:00:00
SELECT TRUNC(SYSDATE,'DD') FROM DUAL;   --결과 2020/02/16 00:00:00   일요일이 첫요일

TRUNC 함수를 이용하면, FLOOR 와 똑같이 값을 절삭하여 버리기도 하지만

이런식으로 날짜와 함께 사용하여 원하는 시작년, 월, 일 ,시간, 분, 등으로 절삭하여 값을 반환받을수 있습니다.

DATE 날짜 포멧

-- YYYY     : 4자리 연도로 표시   
-- YY       : 끝의 2자리 연도로 표시  
-- YEAR     : 연도를 알파벳으로 표시  


-- MM       : 달을 숫자로 표시  
-- MON      : 달을 알파벳 약어 로표시  
-- MONTH    : 달을 알파벳으로 표시  


-- DD       : 일자를 숫자로 표시  
-- DAY      : 일에 해당하는 요일   
-- DY       : 일에 해당하는 요일의 약어  

 
-- HH       : 12시간으로 표시(1-12)  
-- HH24     : 24시간으로 표시(0-23)  


-- MI       : 분을 표시   
-- SS       : 초를 표시   
-- AM, PM   

TO_CHAR와 함께쓰이는 다양한 포멧
 
-- 9    : 일반적인 숫자를 나타냄   
SELECT to_char('123', '999999') FROM dual;  
 
-- 0    : 길이만큼 앞의 빈자리를 0으로 채움   
SELECT to_char('123', '000000') FROM dual;  
 
-- $    : dollar를 표시함   
SELECT to_char('123', '$999999') FROM dual;  
 
-- L    : 지역 통화 단위(ex \)   
SELECT to_char('123', 'L999999') FROM dual;  
 
-- . : 소숫점을 표시함   
SELECT to_char('123', '999.999') FROM dual;  
SELECT to_char('12.3', '999.999') FROM dual;  
 
-- , : 콤마를 표시함
SELECT to_char('12345', '999,999,999') FROM dual;