SQL to return the number of working days between 2 passed in dates

前端 未结 6 1560
礼貌的吻别
礼貌的吻别 2021-01-07 08:10

I need to write an sql query that returns the number of Working days (Monday - Friday) between two given dates.

I was wondering what would be the most efficient way

6条回答
  •  礼貌的吻别
    2021-01-07 08:41

    Thats so simple :

        SQL> Select count(*)
          2  from ( select rownum rnum
          3          from all_objects
          4        where rownum <= to_date('18-dec-2009','dd-mon-yyyy') - 
        to_date('16-nov-2009')+1 )
          5    where to_char( to_date('16-nov-2009','dd-mon-yyyy')+rnum-1, 'DY' )
          6                not in ( 'SAT', 'SUN' )
    
    
          COUNT(*)
        ----------
                25
    
        SQL> Select to_char( to_date('16-nov-2009','dd-mon-yyyy')+rnum-1, 'DY dd-mon-yyyy' )
          2  from ( select rownum rnum
          3          from all_objects
          4        where rownum <= to_date('18-dec-2009','dd-mon-yyyy') - to_date('16-nov-2009')+1 )
          5    where to_char( to_date('16-nov-2009','dd-mon-yyyy')+rnum-1, 'DY' )
          6                not in ( 'SAT', 'SUN' )
    
    
    DAY_DATE
    ---------------
    MON 16-nov-2009
    TUE 17-nov-2009
    WED 18-nov-2009
    THU 19-nov-2009
    FRI 20-nov-2009
    MON 23-nov-2009
    TUE 24-nov-2009
    WED 25-nov-2009
    THU 26-nov-2009
    FRI 27-nov-2009
    MON 30-nov-2009
    TUE 01-dec-2009
    WED 02-dec-2009
    THU 03-dec-2009
    FRI 04-dec-2009
    MON 07-dec-2009
    TUE 08-dec-2009
    WED 09-dec-2009
    THU 10-dec-2009
    FRI 11-dec-2009
    MON 14-dec-2009
    TUE 15-dec-2009
    WED 16-dec-2009
    THU 17-dec-2009
    FRI 18-dec-2009
    
    25 rows selected.
    

提交回复
热议问题