2014-09-18 2 views
2

한 달에 일요일을 찾는 방법은 무엇입니까?한 달에 일요일에서 일요일을 빼는 방법

.. 이것에 일요일의

더 도와주세요 : 4 현재 달을 그리고 난

: 일 월 -sundays

한 달에 일에서이 수를 뺄 필요

사이에 날짜를 전달하면 해당 기간의 일요일 카운트를 받아야합니다.

많은 도움을 주셔서 감사합니다.

수니타 ..

+0

'TO_CHAR'을 (를) 요일에'format mask'로 사용하면 하루를 줄 것이며 'CASE'를 사용하여 'SUNDAY'인지 확인하고 포함하지 않습니다. 더 자세한 답변을 원하시면'테스트 케이스 '를 제공해주십시오. –

답변

0

이 시도 : 당신이 할 수있는 기간 사이의 카운트 날짜

select to_char(last_day(sysdate),'dd') - 
    ((next_day(last_day(trunc(sysdate)),'sunday')-7 
    -next_day(trunc(sysdate,'mm')-1,'sunday'))/7+1) as result 
    from dual 

:

SELECT (next_day(TRUNC(TO_DATE('28/09/2014','DD/MM/YYYY')),'sunday') - 
    next_day((trunc(TO_DATE('13/09/2014','DD/MM/YYYY'))),'sunday')-7)/7+1 AS RESULT 
    FROM DUAL 
+0

죄송합니다. 30 개를 나쁜 장소에 넣었습니다. – Aramillo

+0

감사합니다. . 내가 사이에 날짜를 통과하면 그 기간 동안 일요일 카운트를 얻을 필요가 있습니다 .. – Sunitha

+0

내 게시물을 업데이트, 나는 이것이 도움이되기를 바랍니다 :) – Aramillo

-1
SELECT (
     (
      TO_CHAR(next_day(last_day(TRUNC(sysdate))-7,'SUN'),'DD')- 
      TO_CHAR(next_day(last_day(TRUNC(sysdate-30)),'SUN'),'DD') 
     )/7 
     )+1 
FROM dual; 
+0

답장을 보내 주셔서 감사합니다. 그 사이의 날짜를 전달하면 해당 기간 동안 일요일 카운트를 받아야합니다. 도움을 받으십시오. – Sunitha

0

당신이에서와 날짜에있는 경우, 먼저 계층 쿼리를 사용하여 이들 사이의 모든 날짜를 생성해야합니다. 그런 다음 일요일 만 필터링하십시오.

select count(1) 
from (
    select start_date + level - 1  as dates 
    from dual 
    connect by start_date + level - 1 <= end_date 
) 
where to_char(dates,'fmday') = 'sunday'; 

이번 달의 일요일이 아닌 날 수를 계산하려면 해당 월의 첫 번째 날과 마지막 날을 찾아 위와 같은 절차를 따르십시오.

select count(1) 
from (
    select start_date + level - 1 as dates 
    from (
     select trunc(sysdate,'month') as start_date, 
       last_day(sysdate) as end_date 
     from dual 
     ) 
    connect by start_date + level - 1 <= end_date 
) 
where to_char(dates,'fmday') != 'sunday'; 

Sqlfiddle.

관련 문제