[ORACLE] 오라클 날짜 함수
1. 날짜 포맷
CC: 세기(Century)
YEAR: 년도
YYYY, YYY, YY, Y : 년도 자릿수 표기
BC, AD : 서기 등으로 표시
Q: 분기 표시
MM : 두자리로 월표시
MONTH: 영어로 표시
MON: 영어로 3자리로 월표시
RM: 로마자로 표시 i, ii. xi
WW, WI : 1년기준 몇째주 표시
W :한달기준 몇째주 표시
DDD: 365(1년기준 ) 의 몇째 일
DD: 날짜를 두자리로 표시
D: 요일을 숫자로 표시
DY: 요일 한자리로 표시
DAY: 요일 표시
AM, PM, A.M. , P.M. : 오전오후 표시
HH, HH12 : 12시 기준으로 표시
HH24 : 24시 기준으로 표시
/, "of" : 날짜의 중간에 문자 표시 ->
SPTH: 날짜를 영문 서수로 표시
SP : 날짜를 영문 숫자로 표시
2.연습문제
2.1. 오늘 날짜 시간은 어떻게 구하나?
-- 날짜형_연습문제 1. 한 시간 후와 12000일째 되는 날을 검색하시오. SELECT TO_CHAR(SYSDATE + 1/24, 'YYYY/MM/DD HH24:MI:SS') FROM DUAL; SELECT TO_CHAR(SYSDATE + 12000, 'YYYY/MM/DD') FROM DUAL;
2.2. ADD_MONTHS : ADD_MONTH(날짜, 월수)
-- 날짜형_연습문제 2. 4개월 뒤 오늘 출력하시오. SELECT ADD_MONTHS(SYSDATE, 4) FROM DUAL; -- 날짜형_연습문제 2.1 12개월 전을 출력하시오. SELECT ADD_MONTHS(SYSDATE, -12) FROM DUAL;
2.3. NEXT_DAY : NEXT_DAY(날짜, 요일)
-- => 날짜로부터 앞으로 해당요일에 제일 가까운 날짜를 리턴 SELECT NEXT_DAY(SYSDATE, '월') FROM DUAL;
2.4. LAST_DAY : LAST_DAY(월)
-- 4. LAST_DAY : LAST_DAY(월) -- => 해당 월의 마지날 날짜를 리턴 -- 년월일까지 문자형으로 넣어주면, 옵티마이저가 알아서 해결 -- 년월일까지 숫자형으로 넣어주면, 데이터타입이 통일되어있지 않다고 뜬다. -- TO_DATE로 묶어주면, fmt만 명시해준다면 년월만 적어도 오케이! -- => 주석처리한 친구들은 에러난다!! SELECT LAST_DAY(TO_DATE(20161111)) "1", LAST_DAY(TO_DATE(201611,'YYYYMM')) "2", LAST_DAY('20161111') "3", LAST_DAY(SYSDATE) "4" FROM DUAL;
2.5. ROUND : ROUND(날짜, [fmt])
-- 5. ROUND : ROUND(날짜, [fmt]) -- => 해당날짜에 년, 월, 일, 시, 분, 초 각각 fmt 하나를 기준으로 반올림 한다. -- => 초는 에러가 난다. 왜그럴까? 찾아봐야겠다. SELECT ROUND(SYSDATE, 'YYYY') "년", ROUND(SYSDATE, 'MM') "월", ROUND(SYSDATE, 'DD') "일", ROUND(SYSDATE, 'HH') "시", TO_CHAR(ROUND(SYSDATE, 'MI'), 'YYYY.MM.DD HH24:MI:SS') "분" -- TO_CHAR(ROUND(SYSDATE, 'SS'), 'YYYY.MM.DD HH24:MI:SS') "초" FROM DUAL;
'프로그래밍 > 오라클' 카테고리의 다른 글
[ORACLE] UNION 과 UNION ALL 차이 _ 오라클 (5) | 2017.03.24 |
---|---|
[ORACLE] Natural Join _ 네추럴 조인 _ 오라클 (0) | 2017.03.23 |
[TOAD] 토트 탭설정 _ tab space 2 로 변경 (0) | 2017.03.20 |
[ORACLE]오라클 함수 _ ROLLUP, CUBE, GROUPING SETS (0) | 2017.03.20 |
[ORACLE] 오라클 SQL 문자형 함수 (0) | 2017.03.16 |