당신은 월에 속한 주차를 구해야한다.
이때 고객사에선 대금결제일이 목요일이라 목요일이 속한 월의 주를 기준으로 주차를 정했으면 좋겠다고 한다.
한 주 단위는 월요일부터 시작 일요일까지다
위 규칙에 따라 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;
다른 달 검증
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 |