주차에 해당 하는 월요일 날짜를 뽑고 싶습니다. 0 8 6,417

by 구루업투 [SQL Query] [2018.02.13 14:50:23]


안녕하세요.

검색으로 찾아봣는데 솔루션을 못얻어서 게시판에 글올립니다~~

 

현재날짜의 주차를 구하는건 워낙 잘알려진건데

 

저장된 주차의 해당 월요일 날짜를 구하기는게 쉽지않아서

 

DB에 201806으로 저장되어있는 경우에 201802XX(해당 주에 속하는 월요일 날짜를 뽑고싶거든요..)

도움 부탁드립니다.

 

by 마농 [2018.02.13 15:03:52]

주차의 개념은 정하기 나름이라...
주차의 정의를 명확하게 알려주셔야 합니다.
일주일의 기준이 (월~일) 인지? (일~토) 인지?
아니면 요일과 관계 없이 1월1일부터 1월7일까지가 1주차인지?
연도에 걸치는 주차(12월말일과 1월1일이 포함되는 주)의 경우 어떤식으로 나뉘는지?
1주차의 시작이 언제인지? 마지막 주차는 어찌 되는지?


by 구루업투 [2018.02.13 15:13:01]

아 기준을 설명안드렸네요~

일주일 기준은  월요일 - 일요일입니다~

올해 2주차라고 하면 1/8일입니다~


by 마농 [2018.02.13 15:16:40]

올해는 1월1일이 공교롭게도 주의 시작일인 월요일이라 구별이 안가네요.
1월1일이 월요일이 아닌 다른 년도의 경우 어떻게 되는지?
201806 이라는 값을 어떻게 구해서 테이블에 저장했는지?
- 20161231(토)  ==> 주차는?
- 20170101(일)  ==> 주차는?


by 구루업투 [2018.02.13 15:44:12]

죄송합니다.

제가 정확히 답변을 못드렸네요.

해당 주의 첫번째 주의 기준은 목요일이 됩니다.

예를 들어 15년 1/1이 목요일입니다.(제가 알기론 국제 기준은 주의 목요일이 주의 첫쨋날이더라구요)

15년 첫번째 주의 월요일은 14/12/29일이 됩니다. 

 

1501(15년 1주차) -> 14/12/29 로 표시 되는게 맞습니다.

 

그런 기준으로 보면 2017/01/01은 17년의 첫주이고 기준일은 목요일이니깐 그주의 월요일은 17/01/02 입니다~

주차로는 201701 -> 20170102

 

 


by 우리집아찌 [2018.02.13 15:18:08]
WITH T AS (
SELECT '2016' YEAR , '06' WEEK FROM DUAL UNION ALL
SELECT '2017' YEAR , '06' WEEK FROM DUAL UNION ALL
SELECT '2018' YEAR , '06' WEEK FROM DUAL
)

SELECT NEXT_DAY(TO_DATE(YEAR||'0101','YYYYMMDD') + TO_NUMBER(WEEK-1) * 7, '월' )
 FROM T

 


by 구루업투 [2018.02.13 15:47:40]

감사합니다. 근데 제가 설명을 제대로 못해드렸네요 죄송합니다. ㅜㅜ


by 마농 [2018.02.13 15:54:59]
WITH t AS
(
SELECT '201501' yw FROM dual
UNION ALL SELECT '201652' FROM dual
UNION ALL SELECT '201701' FROM dual
UNION ALL SELECT '201801' FROM dual
UNION ALL SELECT '201806' FROM dual
)
SELECT yw
     , TO_CHAR(
       TRUNC(NEXT_DAY(TO_DATE(SUBSTR(yw, 1, 4)||'01', 'yyyymm')-1, 5), 'iw') --1주차월요일
       + SUBSTR(yw, 5, 2) * 7 - 7 -- 주차 만큼 일자 더하기
       , 'yyyymmdd') ymd
  FROM t
;

 


by 구루업투 [2018.02.13 16:10:54]

감사합니다. 많은도움됐습니다~~~

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입