SELECT TO_CHAR(SYSDATE, 'iw') FROM DUAL
죄송합니다.
제가 너무 어렵게 생각했습니다.
감사합니다.
iw 의 주 기준이 월요일부터 시작인 것은 맞는데요.
- 1월1일이 월화수목 요일일 경우엔 1주차가 되고
- 금토일 요일인 경우 전년도 마지막 주차가 됩니다.
질문하신 상황과는 맞지 않는 듯 하네요?
- 2019년은 1월 7일 ==> 2주차
2017년은 1월 2일부터 1주차라고 한다면?
- 2017년 1월 1일은 몇주차 인가요?
- 0주차?
- 전년도 마지막 주차?
헛; iw가 그런 것이었군요. 월요일 기준으로 주를 카운트한다고 해서 첫번째 월요일부터인 줄 알았는데;;; 어쩌죠. 다시 이글 읽어주세요 작성자님 ㅠ
헐...
마농님 귀신이십니다...ㅠㅠ
그럼 어떻게 해야 정확하게 나올까요?
정말 어긋나네요..
2017년은 1월 2일부터 1주차라고 한다면?
- 2017년 1월 1일은 몇주차 인가요?
- 0주차?
- 전년도 마지막 주차? --> 전년도 마지막 주차가 맞습니다.
읽으셔서 다행이네요. iw가 첫번째 월요일부터 시작한다고 생각하고 있었습니다. 죄송합니다;
별말씀을 다하십니다.
틀렸으면 고치면 되죠^^
답변 주신것 만으로도 감사합니다.
주차는 너무 어려워요.
즐퇴하세요.
답변 달고 퇴근하려고 했는데 머리가 안돌아가네요. 연초를 맞추면 연말이 이상해지는 것 같고..;
간단한 쿼리로 만들려고 했더니 뭐가 잘 안 되네요. 약속있어서 퇴근해야겠습니다. 죄송합니다.ㅠ
WITH t AS
(
-- 테스트용 샘플 --
SELECT TO_DATE('201801', 'yyyymm') + LEVEL - 2 dt
FROM dual
CONNECT BY LEVEL <= 380
)
SELECT dt
, TO_CHAR(dt, 'dy') dy
, TO_CHAR(TRUNC(dt, 'iw'), 'yyyy') ||'-'||
LPAD((TRUNC(dt, 'iw') - NEXT_DAY(TRUNC(TRUNC(dt, 'iw'), 'y') - 1, 2)) / 7 + 1, 2, '0')
AS yyyy_iw
FROM t
;
WITH T AS (SELECT TO_DATE('2016-01-04', 'YYYY-MM-DD') DT FROM DUAL)
SELECT CASE
WHEN DT < TRUNC(TRUNC(DT, 'yyyy') + 6, 'iw') THEN
TRUNC((LAST_DAY(DT - 7) - TRUNC(TRUNC(LAST_DAY(DT - 7), 'yyyy') + 6, 'iw')) / 7) + 1
ELSE
TRUNC((DT - TRUNC(TRUNC(DT, 'yyyy') + 6, 'iw')) / 7) + 1
END WEEK
FROM T
마농님은 역시나 간단하시네요-0-;
와~
오라클 신들께서 모여 사시는 구루비네요.
어마어마하십니다.
두분 모두 감사합니다.