등록된 날짜가 오늘 기준으로 얼마나 지난 글인지 확인하는 건데 지난 기간에서 주말이 포함되면 제외하고 계산 하는 쿼리좀 부탁 드려요
Ex) 날짜 필드에 2019-12-30 11:20:50 이면 30일이 월요일이니까
화요일날 쿼리를 2019-12-31 14:30:40 초에 쿼리를 조회하면 결과가 1일 3시간 10분 초가 라고 표시되고
수요일날 쿼리를 2020-01-01 14:30:40 초에 쿼리를 조회하면 결과가 2일 3시간 10분 초가 라고 표시되고
목요일날 쿼리를 2020-01-02 15:30:40 초에 쿼리를 조회하면 결과가 3일 4시간 10분 초가 라고 표시되고
금요일날 쿼리를 2020-01-03 16:40:40 초에 쿼리를 조회하면 결과가 4일 5시간 20분 초가 라고 표시되고
토요일날 쿼리를 2020-01-04 16:40:40 초에 쿼리를 조회하면 결과가 4일 5시간 20분 초가 라고 표시되고 (주말은 포함 안됨)
일요일날 쿼리를 2020-01-05 16:40:40 초에 쿼리를 조회하면 결과가 4일 5시간 20분 초가 라고 표시되고 (주말은 포함 안됨)
월요일날 쿼리를 2020-01-06 16:40:40 초에 쿼리를 조회하면 결과가 5일 5시간 20분 초가 라고 표시되는 쿼리좀 부탁드립니다.
정리하면 조회 시점에 날짜 기준으로 초가니 날짜를 구하는건데 주말을 제외하고 표시되는게 포인트 입니다.
고수분들 조언좀 부탁 드립니다.
감사합니다.
WITH t AS ( SELECT 1 pk, TO_DATE('2019-12-30 11:20:50', 'yyyy-mm-dd hh24:mi:ss') dt FROM dual UNION ALL SELECT 2, TO_DATE('2019-12-29 11:20:50', 'yyyy-mm-dd hh24:mi:ss') FROM dual UNION ALL SELECT 3, TO_DATE('2019-12-28 11:20:50', 'yyyy-mm-dd hh24:mi:ss') FROM dual UNION ALL SELECT 4, TO_DATE('2019-12-27 11:20:50', 'yyyy-mm-dd hh24:mi:ss') FROM dual UNION ALL SELECT 5, TO_DATE('2019-12-26 11:20:50', 'yyyy-mm-dd hh24:mi:ss') FROM dual ) SELECT pk, dt , FLOOR(x) dd , TO_CHAR(TO_DATE(ROUND(MOD(x, 1)*24*60*60), 'sssss'), 'hh24:mi:ss') tm FROM (SELECT pk, dt , SUM( LEAST(sysdate, TRUNC(dt) + lv) - GREATEST(dt, TRUNC(dt) + lv - 1)) x FROM t a , (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 99) b WHERE lv <= TRUNC(sysdate) - TRUNC(dt) + 1 AND TO_CHAR(TRUNC(dt) + lv - 1, 'd') NOT IN ('1', '7') GROUP BY pk, dt ) ORDER BY pk ;