Get the 5th business day

All,

I am the need to get the 5th date of business for all dates in the dim_date table.

The dim_date table has a structure like this. There are more fields, but I'm in the process of what might be required here

calendar_dt | date_key | is_weekend | is_holiday | next_bus_date_key

22/11/2012. 20121122 | N | THERE | 20121123
23/11/2012. 20121123 | N | N | 20121126
24/11/2012. 20121124 | THERE | THERE | 20121126

What I need would be the 5th business day of each of this date. for example:

22/11/2012. 29/11/2012
23/11/2012. 30/11/2012

and so on, i.e. weekends and holidays are ignored

Any thoughts?

Thank you
S

Edited by: 957793 27 November 2012 04:47

Edited by: 957793 27 November 2012 04:55

Hello

You can do a self-join when you join earlier dates to later dates, except weekends and holidays from later dates, like this:

WITH     got_r_num     AS
(
     SELECT     e.dt
     ,     l.dt               AS b_dt
     ,     ROW_NUMBER () OVER ( PARTITION BY  e.dt
                               ORDER BY          l.dt
                       )    AS r_num
     FROM    data    e
     JOIN     data     l  ON   l.dt  BETWEEN     e.dt + 1
                             AND     e.dt + 14 -- May be different in your company
     WHERE   l.wkend        = 'N'
     AND     l.holiday  = 'N'
)
SELECT       dt
,       b_dt
FROM       got_r_num
WHERE       r_num     = 5
ORDER BY  dt
;

The 'magic number' 14 in the join condition is an upper bound on the actual number of days away the 5th working day can be. Where I work, the holidays are always at least 7 days apart, so the 5th working day is never further than 9 days real (5 days + 2 days + 2 days weekened) suite. Holidays may be more densely grouped in the same data posted Laureline, so I used a lot. If you don't know what number to use in your case, imagine that high.

Tags: Database

Similar Questions

  • How to get the last business day of the previous month?

    Hi all

    We need the user as below,

    If the user select 18 June 2015 ' quick dashboard as the input value, and then they want to see last month last day of work (business date: 29-may-2015) amount in report, if you have an idea please share with us.thanks

    Note:

    use under request we can able to get the last day of the previous month, we want to for the last business day of the last month, based on the date of entry of the user?

    TIMESTAMPADD (SQL_TSI_DAY,-(1), TIMESTAMPADD (SQL_TSI_DAY, DAYOFMONTH ("DIM_TIME". ("" DataDate ") *-(1) + 1,"DIM_TIME ". (("" DataDate "))

    Thank you

    Deva

    Try this,

    case when Dayofweek (timestampadd (sql_tsi_day, Dayofmonth(Date '2015-06-15') *-1, Date ' 2015-06-15')) = 1 then timestampadd (sql_tsi_day, (Dayofmonth(Date '2015-06-15') *-1)-2, Date '' 2015-06-15) when Dayofweek (timestampadd (sql_tsi_day, Dayofmonth(Date '2015-06-15') *-1, Date ' 2015-06-15')) = 7 then timestampadd (sql_tsi_day, Dayofmonth(Date '2015-06-15') *-1-1, Date '' 2015-06-15) another timestampadd (sql_tsi_day, Dayofmonth(Date '2015-06-15') *-1, Date ' 2015-06-15') end

    As Ftsiot said in this post, it will work only to exclude the sat and Sun. Another one if you want to exclude regional holiday, you may need a calendar in DB table.

    Thank you

    AJ

  • Get the number of days in a month based on the month and year of fields

    I have a column in my form which lists the days in a month. I want to configure a hidden field that calculates the total number of days in a month, based on the month and year of the field inputs. The number of days will determine what appears on the column. For example, if I put 4 months, and 2016 in the field of the year, I get 30 in the hidden field. Thus, on the column 'Day', I'll have numbers 1-30. Or if I put 2 months and 2016 in the field of the year, I get the 29 in the hidden field. If the numbers 1-29 appears in the column 'day '.

    Found this on some forum javascript code:

    //Month is 1 based
    function daysInMonth(month,year) {
      
    return new Date(year, month, 0).getDate();
    }

    //July
    daysInMonth
    (7,2009); //31
    //February
    daysInMonth
    (2,2009); //28
    daysInMonth
    (2,2008); //29

    I do not know how to convert this code in JavaScript to adobe and don't really know how to use it. All I know how to do is to configure the field values for the field month and year as variables. I am a novice programmer and would appreciate it really all the help I can get. Thank you in advance!

    The code seems to be JavaScript and runs as needed by using the JavaScript console.

    I would like to consider making more general code, so if you have a date string that includes at least the month and year we could just call the function and get the number of days for that month.

    The following script will calculate the number of days in a month, by using at least the month and year values can display the result on the JavaScript console and all of the value field for the field that has this code as the custom calculation Script.

    function daysInMonth (oDate) {}
    return new Date (oDate.getFullYear (), oDate.getMonth () + 1, 0) .getDate ();
    }

    nMonth var = this.getField("Month").valueAsString; get the value of month;
    nYear var = this.getField("Year").valueAsString; get the value of the year;

    Event.Value = "";

    If (nMonth! = "" & nYear!) = "") {}
    var MyDate = util.scand ("' / mm/yyyy ', nMonth +" / "+ nYear); convert to date object;
    var nDaysInMonth = daysInMonth (MyDate); get the number of days;

    Console.Open (); Open the JavaScript console;

    Console.clear(); clear the console;

    Console.println ("Days in" + nMonth + ":" + nDaysInMonth); show days in month;

    Event.Value = nDaysInMonth; Set the value of the field;

    }

  • SQL query to get the number of days monthwise

    Hello
    I'm new to sql, can someone please tell me query to find the number of days between the two dates months wise.
    say
    FIRSTDATE last date
    21/03/2011-25/06/2011

    March April May June
    9 22 23 18

    Hello

    Welcome to the forum!

    Here's one way:

    WITH     all_dates     AS
    (
         SELECT     start_date + LEVEL - 1     AS a_date
         FROM     (
                   SELECT     TO_DATE ('21/03/2011', 'DD/MM/YYYY')     AS start_date
                   ,     TO_DATE ('25/06/2011', 'DD/MM/YYYY')     AS end_date
                   FROM     dual
              )
         CONNECT BY     LEVEL     <= end_date + 1 - start_date
    )
    SELECT       TO_CHAR ( TRUNC (a_date, 'MONTH')
                , 'fmMonth YYYY'
                )               AS month
    ,       COUNT (*)               AS num_days
    FROM       all_dates
    WHERE       a_date - TRUNC (a_date, 'IW')     < 5
    GROUP BY  TRUNC (a_date, 'MONTH')
    ORDER BY  TRUNC (a_date, 'MONTH')
    ;
    

    What is a 'working day '? I guess you mean every day except Saturday or Sunday, but the query aboveare sometimes figures less than you have asked:

    MONTH             NUM_DAYS
    --------------- ----------
    March 2011               9
    April 2011              21
    May 2011                22
    June 2011               18
    

    Are a few days working on Saturday or Sunday? How do you get the 22 working days in April 2011 and 23 in may?

    SQL is good at obtaining results with a variable number of rows, but you have to say exactly the desired number of columns when you write the query.
    If you really need the output of the way you said, with any number of columns, then watch in swing or a grouping of the chain . See the FAQ forum
    https://forums.Oracle.com/forums/Ann.jspa?annID=1535
    "4. How can I convert rows to columns.

  • Get the number of days, months and year

    Hi all

    I'm using OBIEE 11 g. I have a line of dash for year (2010, 2011, etc.) and months (Jan, Feb,..., Dec). How can I get the number of days in a given month and year in my report?

    For example, if I choose to Jan & 2011, I'd get 31 and 356. And if I choose Feb & 2011, I would get 28 and 356.

    Thank you!

    I have something more good option here... Try to use this

    DAYOFMONTH (TIMESTAMPADD (SQL_TSI_DAY, DAYOFMONTH (CURRENT_DATE) *-1, TIMESTAMPADD (SQL_TSI_MONTH, 1, CURRENT_DATE)))

    This will give you the days for the month in progress (Oct 2011) after calculating the last day of each month... Similary dynamically pass the value Date or month... You will need to modify this function but shud be simple. Hope this helps :)

  • Get the difference in days between 2 dates in Essbase 9.3.1

    How to calculate to get the difference in days between 2 dates in the format day of Essbase 9.3.1.la is 20090101 (yyyymmdd). If 2010907-20100917 = 10 days.
    Start and end dates may extend over several years.

    @DateDiff does not exist in the 9.3.1 I think. With this assumption...

    Could you use the CDF 'Functions of Date'? According to the docs (I've never used it):
    @JdaysOffset - returns the number of days between the firstDate and the secondDate.

    See samplecode.oracle.com for the CDF. Just search for CDF and you will find it on the second page (I think) of the FMCS.

    Or see this thread for another approach that I think the CDF under the covers: Re: Formate Date.

    Of course, you could spend to 11 for DateDiff. :)

    Kind regards

    Cameron Lackpour

  • Compare and get the number of days since the same date field

    Hello

    I need to get the results in days when comparing the same field, date

    For example,.

    Primary_key_field Date_field
    100000002 1 January 10
    100000004 February 1st, 10
    100000005 30 April 10
    100000006 April 18, 10
    100000007 29 April 10
    100000008 May 1st, 10

    extract the first two date_field records based on the primary_key_field. (January 1, 2010 and February 1, 2010) and compare and find the difference and who appear in number of days, the same fetch two disks and do the same math... How can I achieve this... is it possible to make the SQL thro? Please help me solve this problem...

    Thank you and best regards,
    KBG.

    This is the query using functions oracle Analytics

    Primary_key_field Date_field
    100000002 1 January 10
    100000004 February 1st, 10
    100000005 30 April 10
    100000006 April 18, 10
    100000007 29 April 10
    100000008 May 1st, 10

    Select rn, date_field, next, next - date_field "Diff".
    de)
    ROW_NUMBER() SELECT over (ORDER BY primary_key_field) rn,
    date_field, LEAD (date_field) OVER (ORDER BY date_field) next
    FROM table_name)
    /

  • get the number of days of the week to sysdate

    Hi all

    my need is to get the number of the day of the week of sysdate.

    Here's how can I make it right now:

    Select to_char(sysdate,'Dy') t1 double

    But he returns the abbreviated name of the day of the week while I need number of days of the week.

    Please help me. Thanks in advance.

    Best regards

    --

    Marco

    Or if you want the ISO week (Monday = day 1):

    Select trunc (sysdate) - trunc(sysdate,'IW') + 1 double;

  • How to get the date - 7 days (week)

    Hi all

    I am beginner in Java and JSP

    I'm JSP search form (VO) where I need to set a default value for the start_date - 7 days

    OK I get this display today date but how to get that displays a date-7 days?


    < %
    DateFormat df = new SimpleDateFormat ("JJ. MM.yyyy");
    Date date = new Date();
    String default = 'StartDate =' + df.format (new Date());
    % >

    ID
    Thank you

    Simple approach if you're not worried about leap years: -.

    Date todayMinus7 = new Date(System.currentTimeMillis() - 7 * 24 * 60 * 60 * 1000);
    

    Alternatively take a look at the GregorianCalendar class and the add() method.

  • Monday the 1st business day of the month of 15 before and after 15.

    I want to choose the 1st Monday with the business day (Y) of a month (january), owned by the 15th of the month and after the 15th of the month.
    Whereas it should be 2 folders, 1 record should be before the 15th of the month with the word 'Monday' & Holiday (N) and 2nd record should be based on the 15th of the month
    with the word 'Monday' & Holiday (N).

    Table:-holiday
    Column
    ---------
    Time_Date - holiday - Time_Day
    2011-01-01 00:00:00 - N - Tuesday

    Please let me know the oracle query.

    Thanks and greetings
    R Rodriguez

    Edited by: 880353 August 19, 2011 05:14

    It's almost like this... just a matter of playing with the SQL to reorganize the command:

    Select
    min (case when TIME_DATE between trunc(sysdate,'MM') and trunc (sysdate, 'MM') + 13 and)
    H.HOLIDAY = ' only then end TIME_DATE to another null) «FIRST»,
    min (case when TIME_DATE between trunc (sysdate, 'MM') + 14 and last_day (sysdate) and)
    H.HOLIDAY = ' only then end TIME_DATE to another null) "FIRST > = 15.
    Holiday h.
    (select next_day (trunc(sysdate, 'MONTH')-1, 'Monday') + 7 *(level-1) double DD
    connect by level<= 5)="">
    where M.DD = h.TIME_DATE

  • How to get the number of days in a month of belonging to a range of dates

    Hi, I'm going crazy around a problem, I have 2 dates and one month I wanto to retrieve the number of days belonging to the months that fall within the range.

    for example:

    month of January 2011. begin_date = January 11, 2011, May 30, 2011 end_date result is 21
    month of January 2011. begin_date = December 11, 2010, result of end_date, January 10, 2011 10
    month January 2011 .begin_date = 2 February 2011, end_date may 25, 2011 result 0
    month of January 2011. begin_date = January 3, 2011, January 5, 2011 result DATE END 3

    and so on...

    I appreciate any suggestion
    Thank you


    Andrea

    Something like that... ?

    SQL> with t as
      2  (select  to_date('11/01/11','dd/mm/yy') from_dt,
      3           to_date('30/05/11','dd/mm/yy') to_dt,
      4           'Jan-11' mnth from dual)
      5  select least(last_day(to_date(mnth,'Mon-yy')),to_dt) -
      6         greatest(to_date(mnth,'Mon-yy'),from_dt) cnt
      7  from t  ;
    
           CNT
    ----------
            20
    

    If 0 is also expected...

    SQL> with t as
      2  (select  to_date('11/01/11','dd/mm/yy') from_dt,
      3           to_date('30/05/11','dd/mm/yy') to_dt,
      4           'Jan-11' mnth from dual union all
      5           select  to_date('11/01/11','dd/mm/yy') from_dt,
      6           to_date('30/05/11','dd/mm/yy') to_dt,
      7           'Jan-12' mnth from dual
      8           )
      9  select from_dt,to_dt,mnth,
     10         greatest(
     11              least(last_day(to_date(mnth,'Mon-yy')),to_dt)
     12              -
     13              greatest(to_date(mnth,'Mon-yy'),from_dt)
     14                 ,0) cnt
     15  from t;
    
    FROM_DT   TO_DT     MNTH          CNT
    --------- --------- ------ ----------
    11-JAN-11 30-MAY-11 Jan-11         20
    11-JAN-11 30-MAY-11 Jan-12          0
    

    Published by: JAC on February 9, 2012 19:22

  • How to get the number of days

    Hai bloggers,
    See us have 365 days a year for all first half we'll have 180 + days (if we choose first half as the guest and we select week as guest number and the last date of this particular week must indicate in the report) and the number of days until this date or a week should also display... If we choose the second half and half week number it should show number of days until this week and more Date of this issue of the day week should be from 1 to 180 + only way (July 1 m is 1)

    Thank you

    You must use the timestampdiff function to calculate the number of days. One of the way to calculate is how

    cases where "Time". "" Calendar semester "= 1 then timestampdiff (SQL_TSI_DAY, CAST (EVALUATE ('TO_DATE (%1, %2)','' 01-01 |' @{YEAR} {2010}',"DD-MM-YYYY") AS DATE), cast OFF (EVALUATE ('TO_DATE' (1%, 2%), 30-06' |' @{YEAR} {2010}',"DD-MM-YYYY") AS DATE)) else timestampdiff (SQL_TSI_DAY, MOUNT (EVALUATE ('TO_DATE (%1, %2)','01-07' |' @{YEAR} {2010}',"DD-MM-YYYY") AS DATE), cast OFF (EVALUATE ('TO_DATE' (1%, 2%),' 31-12 |' @{YEAR} {2010}',"DD-MM-YYYY") AS DATE)) end

    If you want to calculate between the 1st day of the half and the last date a week then after

    cases where "Time". ' ' Calendar semester ' = 1 then timestampdiff (SQL_TSI_DAY, CAST (EVALUATE ('TO_DATE (%1, %2)','01-01' |' @{YEAR} {2010}', 'DD-MM-YYYY') AS DATE), MAX (MAX ("Time".) "Calendar Date"))) else timestampdiff (SQL_TSI_DAY, CAST (EVALUATE ('TO_DATE (%1, %2)','01-07' |' @{YEAR} {2010}', 'DD-MM-YYYY') AS the DATE), MAX (MAX ("Time".) " End Calendar Date")))

    Hope that it will answer your question

    Thank you
    Phani.

  • Suggest the Sql query to get the years, months, days of the two dates.

    Hi all

    SELECT TO_DATE('06-02-2014','DD-MM-YYYY') - TO_DATE('01-04-1998','DD-MM-YYYY') SERVICE_DAYS OF THE DOUBLE

    5790 SERVICE_DAYS

    POWER REQUIRED:
    YEARS MONTHS DAYS
    15 10 5

    OUTPUT DISPLAY:

    Select
    Floor(5790/ 365.25),
    Floor (mod (5790,365.25) / (365.25 / 12)),.
    ceil (mod(5790,365.25 / 12))
    Double;

    YEARS MONTHS DAYS
    15 10 7 - TWO DAYS MORE


    How they calculate manually is as follows:

    2014 02-06
    1998-04-01
    ---------------
    05 - days

    2014 02-06
    1998-04-01
    + 12
    ---------------
    10 month 02 is lower than 04, so we borrow 12 months of TI (2014) years will be (2013)

    2014 02-06
    1998-04-01
    -(1).
    ---------------
    15. for the years since we-1

    Kind regards

    Afzal.

    OK... so try not not to multiply the reminder to add_months with 30 but to solve the 'day-thing' in a different way...

    first step (data) is only my implementation testdata.

    WITH DATA AS (SELECT TO_DATE('02-03-2014','DD-MM-YYYY') AS Degnide

    TO_DATE('07-04-2008','DD-MM-YYYY') AS dayfrom

    OF the double

    UNION ALL

    SELECT TO_DATE('12-04-2014','DD-MM-YYYY') AS Degnide

    TO_DATE('11-05-1994','DD-MM-YYYY') AS dayfrom

    OF the double

    UNION ALL

    SELECT TO_DATE('06-02-2014','DD-MM-YYYY') AS Degnide

    TO_DATE('01-04-1998','DD-MM-YYYY') AS dayfrom

    OF the double

    )

    calc AS (SELECT months_between (dayto, dayfrom) SERVICE_DAYS

    Degnide

    dayfrom

    DATA)

    SELECT Degnide

    dayfrom

    floor(service_days/12) IN years

    floor (mod(service_days,12)) AS month

    , BUSINESS sign (EXTRACT (Degnide DAY) - EXTRACT (DAY FROM dayfrom))

    WHEN THEN-1 EXTRACT (DAY FROM Degnide) + 30 - EXTRACT (DAY OF THE dayfrom)

    WHEN 0 then 0

    WHEN 1 THEN EXTRACT (Degnide DAY) - EXTRACT (DAY FROM dayfrom)

    0 OTHERWISE

    end as days

    CALC

    HTH

  • Calculate the last business day

    Hello

    I use Oracle Database 11.2.1 and wants to return to the last day of work (JJ/MM/AAAA).

    Working days Monday to Friday delivery

    for example on Sunday, 18 June 2000, the returned value would be Thursday, June 15, 2000

    sliderrules wrote:
    I wanted to say the days of the week

    for example, Monday, May 13, 2013 would return 10/05/2013
    Tuesday, May 14, 2013 would return 13/05/2013 etc.

    What the earlier query?

    SQL> with t as
      2      (
      3      select to_date('13/05/2013 ','dd/mm/yyyy') dt
      4      from dual
      5      union all
      6      select to_date('14/05/2013 ','dd/mm/yyyy') dt
      7      from dual
      8      )
      9      select dt,dt -
     10             case to_char(dt,'fmday','nls_language=english')
     11                         when 'sunday' then 2
     12                 when 'monday' then 3
     13                else 1
     14            end last_w_day
     15     from t;
    
    DT        LAST_W_DA
    --------- ---------
    13-MAY-13 10-MAY-13
    14-MAY-13 13-MAY-13
    
  • How to get the last day of the weekend rather than a month

    Hi all

    Is the request appropriate and preferable to use to get the last business day of the month below?

    SELECT to_date('13.08.2014','dd.mm.yyyy') + MAX(RNUM) LastDay(nonweekend)
       FROM   (SELECT ROWNUM RNUM
              FROM   ALL_OBJECTS where rownum <=31)
      WHERE   ROWNUM <= 31 ANd
         TO_CHAR(to_date('13.08.2014','dd.mm.yyyy') + RNUM, 'DY','NLS_DATE_LANGUAGE=ENGLISH' ) NOT IN ('SAT' , 'SUN')
         and to_date('13.08.2014','dd.mm.yyyy') + RNUM <= last_day(to_date('13.08.2014','dd.mm.yyyy'))
    

    I have to use this motion for production.

    East - recommended to use?

    You can change your query this way:

    WITH t AS (SELECT trunc (to_date ('& calc_date', 'dd.mm.yyyy'), 'mm') + level - 1 calc_date)

    OF THE DOUBLE

    CONNECT BY LEVEL<= last_day(to_date('&calc_date',="" 'dd.mm.yyyy'))="" -="" trunc(to_date('&calc_date',="" 'dd.mm.yyyy'),="" 'mm')="" +="">

    )

    Select max (calc_date)

    t

    where to_char (calc_date, 'DY', 'NLS_DATE_LANGUAGE = ENGLISH') NOT IN ("SAT", "Sun");

Maybe you are looking for