如何从一个月中的天数中减去星期日

时间:2014-09-18 15:51:41

标签: sql oracle

如何在一个月内找出星期日?

请帮我解决这个问题..

星期日没有:当月有4个,我需要从一个月的日子中减去这些数量

::一个月内的天数 - 周日

如果我通过了之间和之间的日期,我需要获得该期间的星期日数。

非常感谢你的帮助。

Sunitha ..

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分:-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;