개발 환경
OS : Windows 8 64 Bit
Platform : Web (http://sqlfiddle.com)
Project :
DBMS : ORACLE
My mental state : not good
The reliability of this article : High
오라클 날짜 관련 정리하다가 월별 차주에 대해서 새로 알게 된게 있어서 포스팅!
일단 여기 참조!
전에 포스팅한 글에서는 달력의 월별 차주가 7일간격으로 1주, 2주, 3주... 이렇게 계산됩니다.
뭐 물론 이것도 좋지만 보통 월욜부터 일욜을 한주로 보니깐 오라클 7일 기준은 조금 애매한 부분이 있음을 인정할 수 밖에 없죠!!!
그래서 또 공부!
이것저것 찾아보니 이런 방법이 있었습니다.
아래에 SQL, 빨간색 부분
SELECT DEEP_1.*,
CASE
WHEN C_DAY_NUM = 1 THEN 'SUN'
WHEN C_DAY_NUM = 2 THEN 'MON'
WHEN C_DAY_NUM = 3 THEN 'TUE'
WHEN C_DAY_NUM = 4 THEN 'WED'
WHEN C_DAY_NUM = 5 THEN 'THU'
WHEN C_DAY_NUM = 6 THEN 'FRI'
WHEN C_DAY_NUM = 7 THEN 'SAT'
ELSE
'WHAR?'
END C_NAME,
CEIL (
(TO_DATE(C_DATE, 'YYYYMMDD') -
TRUNC(TRUNC(TO_DATE(DEEP_1.C_DATE, 'YYYYMMDD'), 'MM'), 'IW') + 1)
/ 7) C_WEEK_ISO
FROM ( SELECT TO_CHAR(TO_DATE('20180101', 'YYYYMMDD') + LEVEL - 1, 'YYYYMMDD') AS C_DATE,
TO_CHAR(TO_DATE('20180101', 'YYYYMMDD') + LEVEL - 1, 'YYYY-MM-DD') AS C_P_DATE,
TO_CHAR(TO_DATE('20180101', 'YYYYMMDD') + LEVEL - 1, 'YYYY') AS C_YEAR,
TO_CHAR(TO_DATE('20180101', 'YYYYMMDD') + LEVEL - 1, 'MM') AS C_MON,
TO_CHAR(TO_DATE('20180101', 'YYYYMMDD') + LEVEL - 1, 'DD') AS C_DAY,
TO_CHAR(TO_DATE('20180101', 'YYYYMMDD') + LEVEL - 1, 'D') AS C_DAY_NUM,
TO_CHAR(TO_DATE('20180101', 'YYYYMMDD') + LEVEL - 1, 'WW') AS C_WEEK_NUM,
TO_CHAR(TO_DATE('20180101', 'YYYYMMDD') + LEVEL - 1, 'W') AS C_WEEK_NUM_OF_MON
FROM DUAL
CONNECT BY LEVEL <= (TO_DATE('20181231', 'YYYYMMDD') -
TO_DATE('20180101', 'YYYYMMDD') +1)) DEEP_1;
이런 식으로 구현이 되더라구요 ;)
TRUNC 함수에 대해서 한번 더 알게 된 기회였습니다.
TRUNC 과 궁금하시다면!!!
그들은 김치를 먹나요 ?
Do they eat kimchi ?
2018년 2월 27일 화요일
2018년 2월 26일 월요일
Oracle SQL - Calendar(Date Row)
개발 환경
OS : Windows 8 64 Bit
Platform : Web (http://sqlfiddle.com)
Project :
DBMS : ORACLE
My mental state : not good
The reliability of this article : High
간단하게 오라클로 날짜 Row 생성하기
해당 쿼리는 주로 표준용 날짜 데이터를 가져오기 위해 만든 것입니다.
그럼 우선 DB SQL Test : <Where are U?>
로 들어가서,
왼쪽 스키마 생성은 그냥 아무거나. 본인은
create table log_table
( message varchar2(200)
)
입력 후 Build Schema 버튼 클릭.
오른쪽 쿼리란에 입력. 쿼리는
SELECT DEEP_1.*,
CASE
WHEN C_DAY_NUM = 1 THEN 'SUN'
WHEN C_DAY_NUM = 2 THEN 'MON'
WHEN C_DAY_NUM = 3 THEN 'TUE'
WHEN C_DAY_NUM = 4 THEN 'WED'
WHEN C_DAY_NUM = 5 THEN 'THU'
WHEN C_DAY_NUM = 6 THEN 'FRI'
WHEN C_DAY_NUM = 7 THEN 'SAT'
ELSE
'WHAR?'
END C_NAME
FROM ( SELECT TO_CHAR(TO_DATE('20180101', 'YYYYMMDD') + LEVEL - 1, 'YYYYMMDD') AS C_DATE,
TO_CHAR(TO_DATE('20180101', 'YYYYMMDD') + LEVEL - 1, 'YYYY-MM-DD') AS C_P_DATE,
TO_CHAR(TO_DATE('20180101', 'YYYYMMDD') + LEVEL - 1, 'YYYY') AS C_YEAR,
TO_CHAR(TO_DATE('20180101', 'YYYYMMDD') + LEVEL - 1, 'MM') AS C_MON,
TO_CHAR(TO_DATE('20180101', 'YYYYMMDD') + LEVEL - 1, 'DD') AS C_DAY,
TO_CHAR(TO_DATE('20180101', 'YYYYMMDD') + LEVEL - 1, 'D') AS C_DAY_NUM,
TO_CHAR(TO_DATE('20180101', 'YYYYMMDD') + LEVEL - 1, 'WW') AS C_WEEK_NUM,
TO_CHAR(TO_DATE('20180101', 'YYYYMMDD') + LEVEL - 1, 'W') AS C_WEEK_NUM_OF_MON
FROM DUAL
CONNECT BY LEVEL <= (TO_DATE('20181231', 'YYYYMMDD') -
TO_DATE('20180101', 'YYYYMMDD') +1)) DEEP_1;
하단 결과가 짠!!!
그럼 오늘도 힘내고 좋은 하루!!!
OS : Windows 8 64 Bit
Platform : Web (http://sqlfiddle.com)
Project :
DBMS : ORACLE
My mental state : not good
The reliability of this article : High
간단하게 오라클로 날짜 Row 생성하기
해당 쿼리는 주로 표준용 날짜 데이터를 가져오기 위해 만든 것입니다.
그럼 우선 DB SQL Test : <Where are U?>
로 들어가서,
좌측 상단에 실행할 DB 툴을 oracle 로 선택.
왼쪽 스키마 생성은 그냥 아무거나. 본인은
create table log_table
( message varchar2(200)
)
입력 후 Build Schema 버튼 클릭.
오른쪽 쿼리란에 입력. 쿼리는
SELECT DEEP_1.*,
CASE
WHEN C_DAY_NUM = 1 THEN 'SUN'
WHEN C_DAY_NUM = 2 THEN 'MON'
WHEN C_DAY_NUM = 3 THEN 'TUE'
WHEN C_DAY_NUM = 4 THEN 'WED'
WHEN C_DAY_NUM = 5 THEN 'THU'
WHEN C_DAY_NUM = 6 THEN 'FRI'
WHEN C_DAY_NUM = 7 THEN 'SAT'
ELSE
'WHAR?'
END C_NAME
FROM ( SELECT TO_CHAR(TO_DATE('20180101', 'YYYYMMDD') + LEVEL - 1, 'YYYYMMDD') AS C_DATE,
TO_CHAR(TO_DATE('20180101', 'YYYYMMDD') + LEVEL - 1, 'YYYY-MM-DD') AS C_P_DATE,
TO_CHAR(TO_DATE('20180101', 'YYYYMMDD') + LEVEL - 1, 'YYYY') AS C_YEAR,
TO_CHAR(TO_DATE('20180101', 'YYYYMMDD') + LEVEL - 1, 'MM') AS C_MON,
TO_CHAR(TO_DATE('20180101', 'YYYYMMDD') + LEVEL - 1, 'DD') AS C_DAY,
TO_CHAR(TO_DATE('20180101', 'YYYYMMDD') + LEVEL - 1, 'D') AS C_DAY_NUM,
TO_CHAR(TO_DATE('20180101', 'YYYYMMDD') + LEVEL - 1, 'WW') AS C_WEEK_NUM,
TO_CHAR(TO_DATE('20180101', 'YYYYMMDD') + LEVEL - 1, 'W') AS C_WEEK_NUM_OF_MON
FROM DUAL
CONNECT BY LEVEL <= (TO_DATE('20181231', 'YYYYMMDD') -
TO_DATE('20180101', 'YYYYMMDD') +1)) DEEP_1;
하단 결과가 짠!!!
그럼 오늘도 힘내고 좋은 하루!!!
Fear can hold you prisoner, hope can set you free.
두려움은 너를 포로로 묶어두지만, 희망은 너를 자유롭게 할 것이다. - 쇼생크탈출
피드 구독하기:
글 (Atom)
대항해시대 조선 랭작
숙련도 획득 방법 선박 건조, 선박 강화, 전용함 추가시 숙련도 획득 모두 동일한 공식 적용 획득 숙련도 공식 기본 획득 숙련도 ≒ int{건조일수 × 현재랭크 × (0.525)} 이벤트 & 아이템 사용...
-
1. 장치 및 프린터 2. 프린터 및 팩스 오른쪽 마우스 -> 프린터 추가 네트워크, 무선 또는 Bluetooth 프린터 추가 사용가능한 프린터 찾는 중 후, C364Series 선택 (프린터에 랜이 연결이 되어 있어야 함. 프린터 ...
-
숙련도 획득 방법 선박 건조, 선박 강화, 전용함 추가시 숙련도 획득 모두 동일한 공식 적용 획득 숙련도 공식 기본 획득 숙련도 ≒ int{건조일수 × 현재랭크 × (0.525)} 이벤트 & 아이템 사용...