당신은 월에 속한 주차를 구해야한다.

이때 고객사에선 대금결제일이 목요일이라 목요일이 속한 월의 주를 기준으로 주차를 정했으면 좋겠다고 한다.

한 주 단위는 월요일부터 시작 일요일까지다

 

 

위 규칙에 따라 1월30일은 2월 1주차이다.

1월29일은 2월 4주차이다.

 

SELECT TO_DATE(:YYYYMMDD,  'YYYYMMDD' )  /*바인딩변수 받는곳*/                A
     , TO_DATE(:YYYYMMDD,  'YYYYMMDD' )-1                                     B
     , TRUNC(TO_DATE(:YYYYMMDD,  'YYYYMMDD' )-1,'WW')                         C
     , TRUNC(TO_DATE(:YYYYMMDD,  'YYYYMMDD' )-1,'WW')+4  /*목요일보정*/       D
     , TO_CHAR(TRUNC(TO_DATE(:YYYYMMDD,  'YYYYMMDD' )-1,'WW')+4,'W')||'주차'  E
  FROM DUAL;

20230130 주차
20230129 주차

다른 달 검증

4월1일, 4월 2일은 5주차가 나와야한다. 4월 3일부터 1주차가 나와야한다.

 

TRUNC나 TO_CHAR로 날짜를 다루는 것은 굉장히 중요하다. (ROUND도 날짜를 다룰 수 있는데 거의 안씀)

주차를 구하는 것도 별것 아닌 것처럼 보이는데 막상해보면 막힐 수 있다.

 

날짜를 다루는데 도움되는 이전 포스트로 마무리!

https://rkwhr0010.tistory.com/8

 

달력 만드는 과정

2022.05.27 - [개발/오라클 SQL] - 한달 달력 구해보기, 오라클에서 날짜계산, 바인딩 변수 이전 포스트 풀이과정입니다. /*1차 필요한 컬럼 값 만들기*/ SELECT LEVEL AS "DAY" ,TO_CHAR(TO_DATE(:ST_YYYYMM, 'YYYYMM')+LE

rkwhr0010.tistory.com

 

 

 

 

 

 

 

 

 

 

 

 

'개발 > 오라클 SQL' 카테고리의 다른 글

WINDOW함수와 DISTINCT조합  (0) 2023.01.19
집계 함수 사용 시 주의사항  (0) 2023.01.15
컬럼 <=> 행 변환  (0) 2023.01.13
숫자 함수 응용  (0) 2023.01.10
자주 쓰는 함수 모음  (1) 2023.01.07

+ Recent posts