언어를 여러개하다보니 자주 쓰지만 쓸때마다 헷갈림..
하나씩 쿼리 날려보며 자주쓰는 유형 정리
-- 오늘 날짜, 원하는 포맷으로 출력(날짜 계산가능)
SELECT TO_CHAR(SYSDATE,'YYYYMMDD') FROM DUAL -- 20161111
SELECT TO_CHAR(SYSDATE,'YYYY/MM/DD') FROM DUAL -- 2016/11/11
SELECT TO_CHAR(SYSDATE,'RR/MM/DD') FROM DUAL -- 16/11/11
SELECT TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS') FROM DUAL -- 2016/11/11 15:08:36
SELECT TO_CHAR(SYSDATE, 'D') FROM DUAL -- 5 > 요일 (1일 2월 3화 4수 5목 6금 7토)
SELECT TO_CHAR(SYSDATE, 'DY') FROM DUAL -- 목
SELECT TO_CHAR(SYSDATE, 'DAY') FROM DUAL -- 목요일
-- 해당일이 몇 주차 구하기 (월~일 체계)
SELECT TO_CHAR(SYSDATE,'IW') FROM DUAL --45
-- 당월 첫 주 특정요일
SELECT NEXT_DAY((TRUNC(SYSDATE,'MM')-1),'수') FROM DUAL
SELECT NEXT_DAY((TRUNC(SYSDATE,'MM')-1),'수요일') FROM DUAL
SELECT NEXT_DAY((TRUNC(SYSDATE,'MM')-1),수) FROM DUAL
-- 2016/11/02 00:00:00 (DATE)
-- 당월 마지막 주 목요일
SELECT NEXT_DAY((LAST_DAY(SYSDATE)-7),'목') FROM DUAL
SELECT NEXT_DAY((LAST_DAY(SYSDATE)-7),'목요일') FROM DUAL
SELECT NEXT_DAY((LAST_DAY(SYSDATE)-7),5) FROM DUAL
-- 2016/11/28 11:49:47 (DATE)
-- 당월 처음 날짜
SELECT TRUNC(SYSDATE,'MM') FROM DUAL --2016/11/01 00:00:00 (DATE)
SELECT TO_CHAR(TRUNC(SYSDATE,'MM'),'YYYYMMDD') FROM DUAL --20161101
-- 당월 마지막 날짜
SELECT LAST_DAY(SYSDATE) FROM DUAL --2016/11/30 15:00:00 (DATE)
SELECT TO_CHAR(LAST_DAY(SYSDATE),'YYYYMMDD') FROM DUAL --20161130
-- 당월 첫주 날 수
SELECT TO_NUMBER(TO_CHAR(NEXT_DAY((TRUNC(SYSDATE,'MM')-1),1),'DD')) FROM DUAL -- 6
-- 당월 마지막주 날 수
SELECT LAST_DAY(SYSDATE) - NEXT_DAY((LAST_DAY(SYSDATE)-7),2) + 1 FROM DUAL -- 3
-- 전월의 마지막 날 구하기
SELECT TO_CHAR(TRUNC(SYSDATE,'MM')-1,'YYYYMMDD') FROM DUAL
-- 하루를 더하고 2달 앞의 일자 구하기
SELECT TO_CHAR(ADD_MONTHS(TO_DATE('20161111','YYYYMMDD')+1,2),'YYYYMMDD') FROM DUAL -- 170112
-- 해당일 포함 된 주의 목요일 날짜
SELECT CASE WHEN TO_CHAR(TO_DATE('20100629','YYYYMMDD'), 'D') < 5 THEN TRUNC(TO_DATE('20100629','YYYYMMDD')-5, 'IW')+3
ELSE TRUNC(TO_DATE('20100629','YYYYMMDD'), 'IW')+3 END RESULT
FROM DUAL
-- 요일 구하기 (한글)
SELECT TO_CHAR(SYSDATE, 'DY') FROM DUAL -- 월
SELECT TO_CHAR(SYSDATE, 'DY', 'NLS_DATE_LANGUAGE=KOREAN') FROM DUAL -- 월
SELECT TO_CHAR(SYSDATE, 'DAY') FROM DUAL -- 월요일
-- 해당주 목요일 날짜
SELECT TRUNC(SYSDATE, 'IW')+3 FROM DUAL
-- 당월 마지막 날의 요일 구하기 (1=일 ~ 7=토)
SELECT TO_CHAR(LAST_DAY(SYSDATE),'D') FROM DUAL
-- 마지막주 목요일 (1=일 ~ 7=토)
SELECT NEXT_DAY((LAST_DAY(SYSDATE)-7),5) FROM DUAL
-- 마지막주 월요일 (1=일 ~ 7=토) 의 하루 전
SELECT NEXT_DAY((LAST_DAY(SYSDATE)-7),2)-1 FROM DUAL
'DB > Oracle' 카테고리의 다른 글
[Oracle] tnsnames.ora 경로 및 파일 수정 하기 (0) | 2020.07.06 |
---|