블로그 이미지
가야금마스터

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

Tag

2015. 3. 16. 15:27 DB/오라클 SQL 명령어

-- 해당일의 주차 구하기 (월~일 체계)

SELECT TO_CHAR(SYSDATE,'IW') FROM DUAL; 

 

-- 당월 첫 주 화요일

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),3) FROM DUAL;

 

-- 당월 마지막 날짜

SELECT LAST_DAY(SYSDATE) FROM DUAL;

 

-- 당월의 첫 날 구하기

SELECT TO_CHAR(TRUNC(SYSDATE,'MM'),'YYYYMMDD') FROM DUAL;

 

-- 당월 첫주 날 수

SELECT TO_NUMBER(TO_CHAR(NEXT_DAY((TRUNC(SYSDATE,'MM')-1),1),'DD')) FROM DUAL;

 

-- 전월의 마지막 날 구하기

SELECT TO_CHAR(TRUNC(SYSDATE,'MM')-1,'YYYYMMDD') FROM DUAL;

 

-- 당월 마지막 주 목요일

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;

 

-- 당월 마지막주 날 수

SELECT LAST_DAY(SYSDATE) - NEXT_DAY((LAST_DAY(SYSDATE)-7),2) + 1 FROM DUAL;


-- 해당일 포함 된 주의 목요일 날짜

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 CASE WHEN LAST_DAY(SYSDATE) - NEXT_DAY((LAST_DAY(SYSDATE)-7),2) + 1 < 4                                              -- 월 마지막 주의 날수가 4일 미만이면서 

                             AND SYSDATE <= LAST_DAY(SYSDATE) AND SYSDATE >= NEXT_DAY((LAST_DAY(SYSDATE)-7),2)   -- 오늘이 월 마지막 주의 일자에 포함되면

                           THEN TO_CHAR(ADD_MONTHS(SYSDATE,1),'YYYY')||TO_CHAR(SYSDATE, 'IW')                                          -- 차월의 월이 속한 년도 + 주차를 취하고

                          WHEN TO_NUMBER(TO_CHAR(NEXT_DAY((TRUNC(SYSDATE,'MM')-1),1),'DD')) < 4                                   -- 월 첫주의 날수가 4일 미만이면서

                             AND SYSDATE <= NEXT_DAY((TRUNC(SYSDATE,'MM')-1),1)                                                                           -- 오늘이 월 첫 주의 일자에 포함되면

                           THEN TO_CHAR(ADD_MONTHS(SYSDATE,-1),'YYYY')||TO_CHAR(SYSDATE, 'IW')                                        -- 전월의 월이 속한 년도 + 주차를 취하고

                             ELSE TO_CHAR(SYSDATE,'YYYY')||TO_CHAR(SYSDATE, 'IW')                                                                           -- 그외는 당월의 월이 속한 년도 + 주차를 취함.

                              END AS YEAR_WEEK_NO

FROM DUAL;

 

-- 요일 구하기 (1=일 ~ 7=토)

SELECT TO_CHAR(SYSDATE, 'D') 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 > 오라클 SQL 명령어' 카테고리의 다른 글

오라클 DDL 정의  (0) 2015.03.19
오라클 AUTO_INCREMENT (인서트 자동증가)  (0) 2015.03.19
날짜관련 명령어  (0) 2015.03.16
NULL 치환 법 ( NVL & NVL2 ) OR DECODE  (0) 2015.03.16
Decode & Case  (0) 2015.03.16
posted by 가야금마스터