Problem with difference of calculation between two dates from Monday to Saturday

Hello

I need help to change a function return number you dates, including Saturday hours (09:00 - 14:00), Monday to Friday (09:00 - 21:00);

This is my code;

CREATE OR REPLACE
FUNCTION TEST2 (FECHA_INICIO DATE, DATE FECHA_FIN)

RETURN NUMBER IS THE NUMBER OF HORASTOTALES;
date the date;

BEGIN
If)
SELECT date, to_char (date, 'DY', 'NLS_DATE_LANGUAGE = ENGLISH') dia.
(SELECT to_date('FECHA_INICIO') + LEVEL - 1 date
OF THE DOUBLE
CONNECT BY LEVEL < = (FECHA_FIN - FECHA_INICIO))
WHERE TO_CHAR (DATE, 'DY', 'NLS_DATE_LANGUAGE = ENGLISH') not IN ("SAT") THEN

with t as)

SELECT CASE LEVEL
When 1 then greatest (fecha_inicio, trunc (fecha_inicio) + 9 / 24)
to another level - 15 + trunc (fecha_inicio) / 24
end fecha_inicio
case connect_by_isleaf
When 1 then least (fecha_fin, trunc (fecha_fin) + 21 / 24)
Another trunc (fecha_inicio) + level - 3 / 24
end fecha_fin
of the double

connect by level < = trunc (fecha_fin) - trunc (fecha_inicio) + 1).

Select sum (more large (fecha_fin - fecha_inicio, 0)) * 24 horas
in horastotales
T

WHEN TRUNC (FECHA_INICIO) - TRUNC (FECHA_INICIO, 'iw') < 5;

RETURN HORASTOTALES;

) ELSE IF
Return HORASTOTALES + 5;
END;

concerning

Hello again,

Using this function, which makes me ask properly, what hours, my problem is that I can not include Saturday hours;

create or replace FUNCTION TEST (FECHA_INICIO DATE, FECHA_FIN DATE

)

RETURNS the NUMBER IS horastotales NUMBER;

BEGIN

with t as)

SELECT CASE LEVEL

When 1 then greatest (fecha_inicio, trunc (fecha_inicio) + 9 / 24)

to another level - 15 + trunc (fecha_inicio) / 24

end fecha_inicio

case connect_by_isleaf

When 1 then least (fecha_fin, trunc (fecha_fin) + 21 / 24)

Another trunc (fecha_inicio) + level - 3 / 24

end fecha_fin

of the double

connect by level<= trunc(fecha_fin)="" -="" trunc(fecha_inicio)="" +="">

)

Select sum (more large (fecha_fin - fecha_inicio, 0)) * 24 horas

in horastotales

T

When TRUNC (FECHA_INICIO) - TRUNC (FECHA_INICIO, 'iw')<>

RETURN horastotales;

END;

Example:

SELECT TEST (TO_DATE (January 7, 2013 09:10 ',' DD-MM-YYYY HH24 '), TO_DATE (February 7, 2013 09:00 "," DD-MM-YYYY HH24 ')) horas

OF THE DOUBLE

output: 11, 8 hours

Then try to add parts of your function, to get what I want, but it gives me compilation errors

Tags: Database

Similar Questions

  • Calculate the difference in days between two Dates

    Hello

    I'm trying to understand how to calculate the difference in days between two dates using JavaScript in LiveCycle. (Minimum = JavaScript knowledge)

    Where 'Start_Date' and 'Current_Date' are the names of the two dates in the palette of the hierarchy. (the two Date/time field)

    * Current date is using the object > value > execution property > current Date/time

    I need a text or number field showing the difference in days. (Difference_in_Days)

    I noticed the following code is pretty standard among other responses:

    var

    Start_date = new Date (Start_Date);

    var

    Current_Date = new Date (Current_Date);

    var

    nAgeMilliseconds = Current_Date.getTime) - Start_date.getTime ();

    var

    nMilliSecondsPerYear = 365 * 24 * 60 * 60 * 1000 ;

    I know there is lack of code and code above are may not be not correct.

    Please notify.

    OK, that's because of the way that javascript and works of the calculate event.  The field will be filled with whatever the script resolves at the end of execution. Technically, your script does not have a value because the last thing you do is an assignment to a variable.  Change the last line as follows:

    Math.ABS ((firstDate.getTime)

    ((- secondDate.getTime (()) / (oneDay));

    (eliminate the variable assignment) and get rid of the app.alert.  Your script will "return" (have) regardless of the value of calculation from the East and which will be stored in the field.

  • find the difference in days between two dates

    Hello world

    I'm trying to find out the difference in days between two dates and the execution of the query that I'm passing

    SELECT TO_char(sysdate, 'dd/mm/yyyy') - TO_char('15/11/2011', 'dd/mm/yyyy') DAYS FROM DUAL

    the error I get is

    ORA-01722: invalid number
    01722 00000 - "invalid number."
    * Cause:
    * Action:

    Could someone please help.

    Thanks in advance

    user10636796 wrote:
    Hello world

    Thanks a lot for all the replies. I am trying to apply it in a statement to my table like this

    SELECT trunc (sysdate) - TO_char (date_last_recommended, ' dd/mm/yyyy') DAYS OF recommendation;

    SELECT trunc (sysdate) - TRUNC (date_last_recommended) DAYS OF recommendation;

  • How to find the difference "within weeks" between two date values?

    Hi all

    Jdev version 11.1.1.7.1

    I used two < af:inputDate > & a < af:inputText > < af:panelFormLayout > components. My requirement is, I want to display the difference of weeks between these two day values in the inputText component when the user clicks the shape.

    Any suggestion would be appreciated.

    Kind regards


    Novel

    You can use this method to get the number of days between the day and date, and then divided by 7 to get the number of weeks

    public static long getDifferenceDaysBetweenTwoDates (d1, d2 oracle.jbo.domain.Date oracle.jbo.domain.Date)

    {

    If (d1! = null & d2! = null)

    {

    return (d1.getValue () .getTime () - d2.getValue () .getTime ()) / (24 * 60 * 60 * 1000);

    }

    return 0;

    }

    Check - http://sameh-nassar.blogspot.in/2014/10/dealing-with-dates-in-java.html

    Ashish

  • Calculation of the difference in days between two Dates

    Hi all
    I have two text fields with dates in them (P2_CURRENT_TIME_POINT_TEST_START_DATE, P2_ORGINAL_TEST_START_DATE). I would like to assign another text field (P3_TIME_FROM_INITIAL_TEST), the difference between the two days. I use a calculation page and tried suptracting them right or a date function diff, I found online, but nothing seems to work. Could someone lend me a hand on this one?

    Thank you.

    Ben,

    Sorry, please try the following:

    :P3_TIME_FROM_INITIAL_TEST := TO_DATE(:P2_CURRENT_TIME_POINT_TEST_START_DATE, 'DD-MON-YYYY') - TO_DATE(:P2_ORGINAL_TEST_START_DATE, 'DD-MON-YYYY');
    

    Remember to substitute the correct format string MON-DD-YYYY.

    Kind regards
    Dan

    http://danielmcghan.us
    http://sourceforge.NET/projects/tapigen

    You can reward this answer by marking as being useful or correct ;-)

  • Dynamic action - Get the difference between two dates + times

    I have problems a little dynamic to work action. I'm trying to get the time between two dates with the time difference.

    Here is what I got (this is apex 4.0):

    Two date pickers + two numbers fields (date/start/end times)

    I created a dynamic action on the page who fires on the point lose focus (above points).

    The real action for the DA is the body of the PL/SQL function:
    declare
      end_date DATE;
      start_date DATE;
    Begin
      start_date := to_char(:P1_START_DATE || ' ' || :P1_START_TIME, 'DD-MON-YYYY HH:MIAM');
      end_date := to_char(:P1_END_DATE || ' ' || :P1_END_TIME, 'DD-MON-YYYY HH:MIAM');
      :P1_HOURS := end_date-start_date;
    End;
    When I change the values on the page, I get the following error:

    AJAX call back Server error ORA-06502: PL/SQL: digital or value error: character number conversion error to set the value.

    I'm guessing that there is a problem with the date formatting, but I can't make it work. Thanks in advance!

    Hi djston,

    because you chose the dynamic action of 'Set value' with the "Body of the PL/SQL function" type you need to return the value. Try the following code

    declare
      end_date DATE;
      start_date DATE;
    Begin
      start_date := to_date(:P1_START_DATE || ' ' || :P1_START_TIME, 'DD-MM-YYYY HH:MIAM');
      end_date := to_date(:P1_END_DATE || ' ' || :P1_END_TIME, 'DD-MM-YYYY HH:MIAM');
      RETURN (end_date-start_date)*24;
    End;
    

    and P1_REQUESTED_HOURS like 'item affected. "

    Concerning
    Patrick
    -----------
    My Blog: http://www.inside-oracle-apex.com
    APEX 4.0 Plug-Ins: http://apex.oracle.com/plugins
    Twitter: http://www.twitter.com/patrickwolf

    Published by: Patrick Wolf on January 17, 2011 10:54

  • How to tell the difference between two dates

    Hello:

    I have a question on how to get the difference in quantities for two dates in the replies and dashboard.

    This is the scenario. I have two guests date and three columns. The first column must be the sum of the amounts for the first quick date. The second column should be the sum of the amounts for the second fast date. And the third column is the difference between the first two columns.

    Basically, I'm trying to do something similar to a function of sum of two lines but trying to get the difference between the two rows. Any help to solve this problem would be appreciated.

    Use the COLUMN FILTERS level...

    the first column with the first variable of date quick presentation of the filter

    Similarly, the second column in the second variable of quick overview of date filter

    Kind regards
    Rambeau

  • Dynamic calculation of the number of days between two dates in a table

    Hello

    I'm working on request where I dynamically calculate the number of days between two dates in a table.

    The calculation must be dynamic, i.e., when I recover the Start_date and End_date and move to the field following (call_duration) in the same row, the difference must be calculated dynamically in this area and make sure the field read-only.

    APEX version: 5.0

    Hi BO123,

    BO123 wrote:

    Hello

    I'm working on request where I dynamically calculate the number of days between two dates in a table.

    The calculation must be dynamic, i.e., when I recover the Start_date and End_date and move to the field following (call_duration) in the same row, the difference must be calculated dynamically in this area and make sure the field read-only.

    APEX version: 5.0

    one of the way to do this by calling ajax on change of end_date.

    See the sample code given below to fetch the resulting duration and making the field read only after calculation

    Step 1: Change your page

    under CSS-> Inline, put the code below

    .row_item_disabled {
      cursor: default;
      opacity: 0.5;
      filter: alpha(opacity=50);
      pointer-events: none;
    }
    

    Step 2: Create on demand Ajax process I say CALC_DURATION

    Please check Procces Ajax, see line 6.7 How to assign a value to the variable sent by ajax call

    Declare
      p_start_date  date;
      p_end_date    date;
      p_duration number;
    Begin
      p_start_date  := to_date(apex_application.g_x01);
      p_end_date    := to_date(apex_application.g_x02);
    
       --do your calculation and assign the output to the variable p_duration
      select p_end_date - p_start_date into p_duration
        from dual;
    
      -- return calculated duration
      sys.htp.p(p_duration);
    End;
    

    Step 3: Create the javascript function

    Change your page-> the function and the declaration of the Global Variable-> put the javascript function

    You must extract the rowid in the first place, for which you want to set the time, see line 2

    assuming f06, f07 and f08 is the id of the start date, and end date columns respectively, and duration

    See no line no 8 how set the value returned by the process of ajax at the duration column

    Replace your column to the respective column identifiers in the code below

    function f_calulate_duration(pThis) {
      var row_id  = pThis.id.substr(4);
      var start_date = $('#f06_'+row_id).val();
      apex.server.process ( "CALC_DURATION", {
      x01: start_date,x02: $(pThis).val()
    }, { success: function( pData ) {
    // set duration to duration column
    $('#f08_'+row_id).val(pData);
    // disable duration column
    $("#f08_" + row_id).attr("readonly", true).addClass('row_item_disabled'); }
    });
    }
    

    Step 4: choose the end date call the javascript function

    Go to report attributes-> edit your Date column end-> column-> Attrbiutes element attributes-> put the code below

    onchange="javascript:f_calulate_duration(this);"
    


    hope this helps you,

    Kind regards

    Jitendra

  • Need assistance with obtaining data of users modified between two dates in IOM

    Hi all

    I have a 11g IOM environment where I need to write a scheduled task that needs to go out the data of users that have been modified between two dates. After the search in the forums, I've had an idea and wrote the following code for the same thing. But it doesn't seem to work. Can someone help me here please?

    > //initialize upper and lower attributes to two values of oracle.sql.DATE
    > Criteria1 SearchCriteria is nothing, Criteria2 = null, criteria;
    > criteria1 = new SearchCriteria ("update the", lower, SearchCriteria.Operator.GREATER_EQUAL);
    > Criteria2 = new SearchCriteria ("update the", plus top, SearchCriteria.Operator.LESS_EQUAL);
    > criteria = new SearchCriteria (Criteria1, criteria2, SearchCriteria.Operator.AND);
    > //initialize the necessary parameters, obtain a User Manager object and follow these steps
    > users = umgr.search (criteria, attrNames, settings);

    But this doesn't seem to work. Can someone shed light on this you? The attribute "updated on" is not available for this task? If I use a unique 'User login' attribute search criteria, this thing works and gets the user data but this does not work when I use the attribute "updated on" so made me think maybe that this attribute is not available for use via the API or something. Or maybe it's with the help of the oracle.sql.DATE is a problem here. Not sure if. So kindly help me with this.

    Thanks in advance,
    $id

    I suggest that create you a real attribute in your scheduled task called something like 'Last Run Timestamp'. The reason why I say this is that you can modify your search on this basis rather than manipulate the date of beginning and end of the last run. To retrieve the value, like any other attribute use this:
    >
    String lastRunTimestamp = hashMap.get ("last Run Timestamp") m:System.NET.SocketAddress.ToString ();
    >
    Format your time you are entered like this: "YYYY-MM-DD hh: mm: zzz ' in order to retrieve and format the value like this:
    >
    SimpleDateFormat time = new SimpleDateFormat ("yyyy-MM-DD hh: mm: zzz");
    recover start date, so it can be updated on the ground on the scheduled task
    Start date = new Date();

    Convert timestamp last executed so far
    Date stamp = new Date();
    timestamp = time.parse (lastRunTimestamp);
    >
    You have now your last time stamp execution that you can set your time dérirez based on.

    And finally, to return the last value of stamp on both scheduled run time, you started this task
    >
    SchedulerService task = Platform.getService (SchedulerService.class);
    Task = task.lookupScheduledTask taskEntry (getName ());
    JobParameter = taskEntry.getParameters () .get ("last Run Timestamp") jobparam;
    JobDetails job = task.getJobDetail (getName ());
    HashMap attributes = job.getAttributes ();
    String timestamp = (time.format (start));
    jobparam.setValue (timestamp);
    Attributes.put ("last Run Timestamp", jobparam);
    job.setAttributes (attributes);
    task.updateJob (job);
    >

    I hope it's useful. This is how I do all my scheduled tasks that need a timestamp.

    -Kevin

  • How to find the difference between two dates in the presentation layer

    Hi gurus,

    Hello to everyone. Today, I came with the new requirement.


    I need to know the difference between a date and the current date in the formula column application presentation layer.by.



    Thank you and best regards,
    Prates

    Hi Navin,

    TIMESTAMPDIFF function first determines the timestamp component that corresponds to the specified interval setting. For example, SQL_TSI_DAY corresponds to the day component and SQL_TSI_MONTH corresponds to the component "month".

    If you want to display the difference between two dates in days using SQL_TSI_DAY, unlike butterflies SQL_TSI_MONTH and so on...

    hope you understand...

    Award points and to close the debate, if your question is answered.

    See you soon,.
    Aravind

  • difference between two dates in the year/month/day in Obiee

    Hi gurus,

    I know this question have been asked and answered several times but I have a requirement that is a little different, then the previous ones.

    I want to calculate the difference between two dates in OBIEE10g in year/month/day format similar to the below SQL output

    SQL > select end_date, start_date,

    trunc (months_between (end_date, start_date) / 12) years.

    months of mod (trunc (months_between (end_date, start_date)), 12).

    End_date - add_months (start_date, trunc (months_between (end_date, start_date))) days

    t

    Thanks in advance

    SK

    Search for this

    "TIMESTAMPDIFF IN THE FORM OF MTHS # YEARS."

    or else

    To get the current mandate of employees since the date of hiring in the form of # years # mths or # year (s) # month (s)

    Concat (concat (cast (TIMESTAMPDIFF (SQL_TSI_Month, "Employee attributes". (((' ' Hiring last Date employee ", CURRENT_DATE) / 12 as char),"Year (s)"), concat (cast (MOD (TIMESTAMPDIFF (SQL_TSI_Month,"Employee attributes". (((((' ' Hiring last Date employee ", CURRENT_DATE), 12) as char), 'Month (s)'))

    Concat (concat (CAST (TIMESTAMPDIFF (SQL_TSI_YEAR, "Employee attributes". (((' ' Hiring last Date employee ", CURRENT_DATE) as CHAR),"Year (s)"), concat (cast (MOD (TIMESTAMPDIFF (SQL_TSI_Month,"Employee attributes". (((((' ' Hiring last Date employee ", CURRENT_DATE), 12) as char), 'Mth (s)'))

  • How do the time difference between two dates?

    Hi all

    I use this query to get the time difference between two dates.

    Select to_timestamp ('2012-10-03 12:00 ',' YYYY-MM-DD hh)-to_timestamp ('2012-10-03 11:00 ',' YYYY-MM-DD hh) as double diff;

    but do not get the correct result.

    Thank you

    Left KEY... Left Padding of tanks.

  • Find the difference between two date and time

    Hi friends,

    I wanted to find the difference between two date and time, but my qury is slightest error "invalid number."

    select sql_step_num,proc_name,run_seqno,start_date,end_date,(to_char(start_date,'HH24-MI-SS') - to_char(end_date,'HH24-MI-SS') ) as ed  
    from eval.EVAL_RUNTIME_DETAILS
    where trunc(start_date) = trunc(sysdate) 
    order by sql_step_num;

    You try to get the feel between two char strings.
    And more difference between two dates gives a NUMBER of days.
    Try this:

    select sql_step_num,proc_name,run_seqno,start_date,end_date,numtodsinterval(end_date-start_date,'DAY') as ed
    from eval.EVAL_RUNTIME_DETAILS
    where trunc(start_date) = trunc(sysdate)
    order by sql_step_num;
    
  • Week, month, quarter and year calculation between two days with a quantity?

    I have a problem that I can't solve.

    Users enter a forecast (quantity) and a validity period between two dates.
    Expected quantity is always a monthly forecast.

    The problem is that the user wants to see the forecast by week, month, quarter and year.


    Material |     Quantity |     Date_from | Date_to
    Label45 |     1500 |     2009-09-01 | 2009-12-31


    How can I easily calculate the amount so that the user can enter e.g. week 2009.41 and see the forecast this week?

    You should test for your specific environment, but I would be very surprised if a function has surpassed SQL directly.

  • Calculate the (age) years between two dates

    Nice day!

    I have not been able to find an answer, that I was able to use in the archives or online and would be very grateful for the help.  I'm working with Adobe Acrobat Pro XI (not LiveCycle) and I have very little experience with programming (for the most part, copy / paste).

    I need to create a text box that calculates the number of years between two dates entered, i.e. the age when the date of birth and death are given.  Also, would be nice if she was a Virgin until the two were provided.  Anyone would be able to give me the code I need to put in the custom calculation script?

    Once again, any help would be much appreciated!  Thank you and have a wonderful day!

    For the fields for Date of birth DOB and DOD for the Date of death and age in complete years both by using a'd-mmm-yyyy' date format you can use a custom calculation to the JavaScript for the field of age as:

    function GetField (cName) {}
    get the field with error trapping object;
    oField var = this.getField (cName);
    test error;
    if(oField == null) app.alert ("error during the" + cName, 1, 0);
    Returns the field object;
    return oField;
    } / / end GetField function;

    function {Scand (cFormat, cString)
    using date string format convert object date;
    convert string to date using format;
    Kai var = util.scand (cFormat, cString);
    the value null is an error of conversion;
    if(oDate == null) app.alert ("Conversion error" cString "by using the format" + cFormat, 1, 0);
    date of return;
    Return to oDate;
    } / / end Scand function;

    clear the value of the field;

    Event.Value ="";
    get data dob and dod;
    var oDOB = GetField ("DOB");
    Var o = GetField ("DOD");

    treat only if DOB and DOD have value and are not null;
    If (oDOB! = null & o! = null & oDOB.value! = "" & oDOD.value!) = "") {}

    convert the DOB and DOD to date objects.
    oDOB var = util.scand ("d-mmm-yyyy", oDOB.value);
    O var = util.scand ("d-mmm-yyyy", oDOD.value);

    get the difference over the years;
    var Age = oDOD.getFullYear () - oDOB.getFullYear ();

    adjust for month of previous DOD DOB;
    If (oDOD.GetMonth)< odob.getmonth())="">

    adjust the DOD before DOB date in the month of birth;

    If (oDOD.GetMonth () == oDOB.getMonth () & oDOD.getDate ())< odob.getdate())="">
    Set the value of the field;

    Event.Value = Age;
    }

Maybe you are looking for