Dynamically calculate the number of days between two dates and amounts of split
HelloI have searched for a solution for this, but had no success.
I need to show the amounts broken down by days.
I have a table that has an amount column and start and end dates.
I need to write a query so that the amounts will be broken evenly based on the number of days between the start date and end date.
For example, for this line.
insert into my_test values (' 1, '' 3-mar-2010, ' 7 - mar - 2010 ", 1000);
the query returns this (split $1,000 over 5 days)
ID Date amount
1 ' 3-mar-2010' 200,00
1 ' 4-mar-2010' 200,00
1 ' 5-mar-2010' 200,00
1 ' 6-mar-2010' 200,00
1 ' 7-mar-2010' 200,00
create table my_test)
ID number (10),
start_date date,
End_date date,
amount number (10.2)
);
Select * from my_test
insert into my_test values (' 1, '' 3-mar-2010, ' 7 - mar - 2010 ", 1000);
insert into my_test values (2, 10-mar-2010 ", 19-mar-2010", 2000);
insert into my_test values (3, 20-mar-2010 ',' 21-mar-2010, 5000);
Thanks in advance.
Hello
One way is to join a Meter of Table , a table, or (more often) a set of results includes a line for eery number 1, 2, 3,... until the maximum number of times you need to divide a line.
For example:
WITH cntr AS
(
SELECT LEVEL - 1 AS n
FROM ( SELECT MAX (end_date - start_date) AS max_day_cnt
FROM my_test
)
CONNECT BY LEVEL <= 1 + max_day_cnt
)
SELECT t.id
, t.start_date + c.n AS dt
, t.amount / (t.end_date + 1 - t.start_date) AS amt
FROM my_test t
JOIN cntr c ON c.n <= t.end_date - t.start_date
ORDER BY id
, dt
;
This assumes that all dates have the same number of hours, minutes, and seconds, as is the case in your sample data.
If this isn't the case, then use TRUNC (start_date) and TRUNC (end_date) instead of start_date and end_date or post some sample data and results if some lines do not represent a whole number of days.
Tags: Database
Similar Questions
-
Calculate the number of days between two dates
Hello
Can someone help please change my formcalc script to calculate the number of working days between two date fields. My script currently calculates the total number of days between two dates, including the weekends which must be excluded from the total.
If
(HasValue (Start_Date1) & HasValue (End_Date1)) then
$
= Date2Num (End_Date1, "YYYY-MM-DD" "en_IE") - Date2Num (Start_Date1, "YYYY-MM-DD" "en_IE") + 1
on the other
""
endif
Any help will be most appreciated.
Thank you.
Check...
(1) you said that you put the script on the event «days1» calculate My sample imitates the variable names used in the original message, "Start_Date1" and "End_Date1". If the names of variables for the start and end dates are different, you will need to modify the script to account for these names.
(2) the Date2Num functions in the calculation of the "totalDays" use the date format "YYYY-MM-DD". If your date habits differ from "YYYY-MM-DD" FormCalc will complain.
Steve
-
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
-
JavaScript anomaly on the number of days between two dates
Use ApEx 4.0, I found an anomaly in a javascript code that calculates the number of days between two dates, the current_date and the past_date. If the past and present is the or before March 10, 2013, and the current_date lies between 10 March 2013 and November 3, 2013, the number of days will be from 1 day to less than the actual number. Between November 3, 2013 and on 4 November 2013, the increments of number by 2, then the count will be accurate from this date forward.
Here are some examples:
March 10, 2013 = 69 days of December 31, 2012
March 11, 2013 = 69 days of December 31, 2012
March 12, 2013 = 70 days of December 31, 2012
November 3, 2013 = 306 days in December 31, 2012
November 4, 2013 = 308 days in December 31, 2012
11 March should be 70 and 12 March should be 71. November 3 is 307 and 4 November corrects the number of fake, which began March 11.
Change the past_date to March 10, 2013 produces the following:
March 10, 2013 = 0 days of March 10, 2013
March 11, 2013 = 0 days of March 10, 2013
March 12, 2013 = 1 days of March 10, 2013
But change the past_date to 11 March 2013, product of the correct numbers:
March 11, 2013 = 0 days of March 11, 2013
March 12, 2013 = 1 days of March 11, 2013
March 13, 2013 = 2 days of March 11, 2013
I would certainly all help to determine the cause of this anomaly. Here's the javascript code:
var w1 = ($v ("P48_PAST_DATE"));
W1 = (w1.toString ());
vmon var = (w1.substr (3.3));
vyr var = (w1.substr (7));
var r = (vyr.length);
If (r == 2)
vyr. = (parseFloat (vyr) + 2000);
vday var = (w1.substr (0.2));
var y = (vmon.concat ("", vday, ",", vyr));
y = Date.parse (y);
var w2 = ($v ("P48_CURRENT_DATE"));
var vmon2 = (w2.substr (3.3));
var vyr2 = (w2.substr (7));
var vday2 = (w2.substr (0.2));
var x = (vmon2.concat ("", vday2, ",", vyr2));
x = Date.parse (x);
var numdays = (x - y);
numdays = (Math.floor(numdays / 86400000));
$s ("P48_NUMBEROFDAYS", numdays);Did you google for something like "javascript number of days between two dates. I think you will find the explanation to this observation:
This method does not work correctly if there is an advanced economies jump between the two dates.
There are examples available to calculate the difference between two dates.
-
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.
-
to calculate the number of days between 2 dates
Hi all
I need to calculate the number of days between 2 dates.
Y at - it no oracle built on that basis.
Thanks in advance
Kind regards
Nickuser646786 wrote:
HelloThanks a lot its really useful, but I must make a correction, I just want weekdays rather working days
As already said, there are many examples on the forum of the calculation of the working days or the days of the week or whatever you want between certain dates of restrictions. You will need to have a go at adapting what has already been given before and then when you get stuck, come here and your postcode, and someone will take a look for you.
-
How to find the number of days between 2 date elements in the XSLT file
Hello
I need to calculate the number of days between 2 date elements (type xs: date). Can you please direct me as to how I can do the same thing.
I work in 11g and using XSLT 1.0. I tried several options but yet to get a solution for this. I think that this can be done also using XSLT 2.0, but who has not worked for me.
Can someone please help with this problem, thanks in advance!
Thank you
AnjuHello
Have you seen this message?
Re: Get the Date difference between 2 values of date in daysYou can do in the XSLT file since the dates are in ISO 8601 format.
http://www.w3.org/TR/NOTE-datetimeHere is a sample XSLT...
The XSLT above will result in * 4 * for the next entry...
2012-01-11T00:00:00.000-05:00 2012-01-15T00:00:00.000-05:00 You can test this example here...
http://xslttest.appspot.com/I hope this helps...
See you soon,.
VladIt is considered good etiquette to the answerers rewards with points (as "useful" - 5 pts - or 'correct' - 10pts)
https://forums.Oracle.com/forums/Ann.jspa?annID=893 -
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 advanceuser10636796 wrote:
Hello worldThanks 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 calculate the number of days between dates
How can I determine the number of days between 2 dates? Say today and 10/07/46
Thanks BobYou could do it like this:
Photoperiod var = 1000 * 60 * 60 24; number of ms in a day
var today: Date = new Date();
var every time that: Date = new Date (1946,6,10);
var diff = Math.floor((today.getTime()-whenever.getTime())/dayLength);
trace (diff)
-
Number of days between two Dates in the Correct month
I am trying to write a SELECT statement that returns the number of days spent on a project.
Here's my problem. I have a table with several columns of date (start_date, end_date, etc.) as well as several other columns. Here is an example of the table.
PROJECT... START_DATE... END_DATE
123 ................. 1ST JANUARY 13... 15 JANUARY 13
456 ................. 25 JANUARY 13... FEBRUARY 5, 13
789 ................. 30 JANUARY 13... FEBRUARY 5, 13
999 ................. 1ST FEBRUARY 13... FEBRUARY 8, 13
I'm counting the number of days spent on projects in each month. For example, with the above data, I would come back...
MONTHS... PROJECT_DAYS
Jan ............. 24
Feb ............. 18
I tried to use a CASE statement, but I'm having a hard time to understand. Any help would be greatly appreciated!
Published by: 987079 on February 8, 2013 13:12An option would be something like
1 with project as ( 2 select 123 project_id, date '2013-01-01' start_date, date '2013-01-15' end_date from dual union all 3 select 456, date '2013-01-25', date '2013-02-05' from dual union all 4 select 789, date '2013-01-30', date '2013-02-05' from dual union all 5 select 999, date '2013-02-01', date '2013-02-08' from dual 6 ), 7 all_days as ( 8 select start_date + level - 1 dt 9 from (select min(start_date) start_date, 10 max(end_date) end_date 11 from project) 12 connect by level <= end_date - start_date + 1 13 ) 14 select trunc(dt,'MM'), 15 count(*) 16 from all_days ad 17 join project p on (ad.dt between p.start_date and p.end_date) 18 group by trunc(dt,'MM') 19* order by trunc(dt,'MM') SQL> / TRUNC(DT,'MM') COUNT(*) ------------------- ---------- 2013-01-01 00:00:00 24 2013-02-01 00:00:00 18
Justin
-
Function to calculate the Minutes of business between two Dates
Hello
I use the version of database Oracle 11.2.1. I would like to calculate the number of minutes of work between the two dates where working hours are Monday - Thursday from 08:45 to 17:00 and Friday from 08:45 to 16:30
I found the following function useful in a similar position but wanted help picking up the days and the hours above into account
CREATE OR REPLACE
FUNCTION get_bus_minutes_between(
p_start_date DATE,
p_end_date DATE
)
RETURN NUMBER
IS
v_return NUMBER;
BEGIN
with t as (
select case level
when 1 then greatest(p_start_date,trunc(p_start_date) + 9 / 24)
else trunc(p_start_date) + level - 15 / 24
end start_dt,
case connect_by_isleaf
when 1 then least(p_end_date,trunc(p_end_date) + 18 / 24)
else trunc(p_start_date) + level - 8 / 24
end end_dt
from dual
connect by level <= trunc(p_end_date) - trunc(p_start_date) + 1
)
select sum(greatest(end_dt - start_dt,0)) * 24 * 60 work_minutes
into v_return
from t
where trunc(start_dt) - trunc(start_dt,'iw') < 5; -- exclude weekends
RETURN v_return;
END;
/Can anyone help?
Hello
Think about what you do.
sliderrules wrote:
SELECT TO_CHAR (DATE ' 1-1-1' + business_end_time, 'HH24:MI:SS')-TO_CHAR (DATE ' 1-1-1' + business_start_time, 'HH24:MI:SS') * 24 * 60
of time_dim
where full_date = July 1, 2013.
AND working_day = 'Y ';
The following error is returned:
ORA-01722: invalid number
The time is converted to character reslting with this error. Is there a better way to subrtacting types of data INTERVAL DAY (1) SECOND (2) (business_end_time - business_start_time)
To_char, as its name implies, returns a string of characters. You say that
TO_CHAR (...) - TO_CHAR (...) * 24 * 60
If you ask for the string returned by the 2nd TO_CHAR be multiplied by 24. Does make any sense to you?
Maybe you wanted to do the subtraction first, which would be
(TO_CHAR (...) - TO_CHAR (...)) * 24 * 60
but still would be a mistake, because you can't subtract a string to another string (or anything else).
.
Last Friday, I proposed this:
SELECT SUM (LESS (end_dt, v_end_dt)
-Most GREAT (start_dt, v_start_dt)
) * 24 * 60...
where start_dt and end_dt were the DATE in the table columns, as the value returned by TO_DATE (08 11 July 2013:45 ', "DD-Mon-YYYY HH24").
If I understand correctly, you would store stores rather 3 columns: full_date (a DATE, where the time part is 00:00:00) as well as business_start_time and business_end_time (the two INTERVAL DAY TO SECOND). In this case, you can modify the code above to say:
SELECT SUM (LESS (full_date + business_end_time, v_end_dt)
-GREATEST (full_date + business_start_time, v_start_dt)
) * 24 * 60...
You can add a DATE at an INTERVAL; the result will be a DATE. There is no need to convert anything to a data type to the other.
-
Dates of the fortnight of days between two dates
Hello
I want to show every fortnight dates based on the date, to date and the day of week (sunday, monday...)
Input parameters
Date: 31/05/2011
To date: 30/06/2011
day of week: Thursday
Output
06/02/2011
16/06/2011
30/06/2011
Input parameters
Date: 25/06/2011
To date: 30/06/2011
day of week: Monday
Output
27/06/2011
can someone help me?
Published by: user10594152 on May 30, 2011 22:10
Published by: user10594152 on May 30, 2011 22:19Hello
Here's one way:
WITH parameters AS ( SELECT DATE '2011-05-31' AS start_date , DATE '2011-06-30' AS end_date , 'Thursday' AS day_o_week FROM dual ) , got_dt AS ( SELECT end_date , NEXT_DAY ( start_date - 1 , day_o_week ) + (14 * (LEVEL - 1)) AS dt FROM parameters CONNECT BY LEVEL <= CEIL ( (end_date - start_date) / 14 ) ) SELECT dt FROM got_dt WHERE dt <= end_date ;
This ID on NLS_DATE_LANGUAGE load. If you do not what it is, you can change the sub-quewry like this:
WITH parameters AS ( SELECT DATE '2011-06-25' AS start_date , DATE '2011-06-30' AS end_date , TO_CHAR ( DATE '2011-05-30' -- or any Monday , 'Day' ) AS day_o_week FROM dual ) ...
Published by: Frank Kulash, 30 May 2011 13:13
Adding a warning about NLS_DATE_LANGUAGE -
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
Danhttp://danielmcghan.us
http://sourceforge.NET/projects/tapigenYou can reward this answer by marking as being useful or correct ;-)
-
Behavior of days between two dates
Hello!
If anyone can help? ... with differences in Date? :
All I want is to calculate the number of days between two dates:
InitDate has been entered as 01/10/2010 planning, to recover is 20101001
HireDate was entered into the 1980-10-01 planning, to recover is 19801001
I tried
NumDays = @DATEDIFF (InitDate, HireDate, DP_DAY);
but give me only 0 and -1.
When I try the regular difference:
NumDays = InitDate - HireDate;
He returned to 30,000 (which in the example is 20101001-19801001) - which should not.
I use Essbase/Planning 11.1.1.2, I tried also to break dates in years and months using INT and operations, but when I want to get the calendar days he is ugly. The two dates live in the same block.
Someone at - it an idea?
Thank you very much!Hello
Here's a piece of code in my trunk of code which may help you. This assumes you have string CDF pack (https://www.samplecode.oracle.com/tracker/tracking/linkid/prpl1004/remcurreport/true/template/ViewIssue.vm/id/S441/nbrresults/9)var y1, y2, m1, m2, d1, d2, difx1, difx2;
FIX (SOLUTION YOUR MEMBERS HERE)
"BLOCK MEMBER")Y1=@round ("Date of 1" / 10000,0);
Y2=@round ("Date 2" / 10000,0);
M1=@round (("Date 1"-y1*10000)/100, 0);
M2=@round (("Date 2"-y2*10000)/100, 0);
D1 = ' Date of 1 "-(y1*10000+m1*100);"»
D2 = "Date 2"-(y2*10000+m2*100); "»difx1=@TODATEEX ("mm/dd/yyyy",
@JconcatStrings (@LIST (@JgetStringFromDouble (m2,@_false,@_false), ' / ', @JgetStringFromDouble (d2,@_false,@_false), ' / ', @JgetStringFromDouble (y2,@_false,@_false)))
)
) ;
difx2 = @TODATEEX ("mm/dd/yyyy", @JconcatStrings (@LIST)
@JgetStringFromDouble (m1,@_false,@_false), ' / '.
@JgetStringFromDouble (d1,@_false,@_false), ' / '.
@JgetStringFromDouble (y1,@_false,@_false))
)
);diff=@DateDiff (difx2, difx1, DP_DAY);
)
ENDFIXSee you soon,.
Alp -
Number of weeks between two dates that are in the same or different year
Hello
How to calculate the number of weeks between two dates?
for example. "" "17-mar-2013' and June 27, 2013" or June 15, 2013 "and" 25-mar-2014
Thanks in advance.
lukx
Hello
Looks like your date range is incorrect.
Please try the below.
SQL >-front right
SQL > select D2 - D1 "days."
2 round ((D2-D1)/7.0) "weeks."
3 round (Months_between (d1, d2), 0) 'months '.
(select 4
5 TO_DATE ('20121201', 'YYYYMMDD') D1, D2 TO_DATE ('20130116', 'YYYYMMDD')
6 from two
(7) date_range;
Elapsed days weeks months
------------ --------- ---------
46 7 1
Maybe you are looking for
-
Solution for Power Saver error during installation
Hello I've read several topics on the error during the installation of this utility powersaver.I had the same problem even with a clean install of windows XP and I FOUND the solution.The error seems to disappear and Powersaver works great after insta
-
Touch of Toshiba Journ E counts reset!
Hello good day You can reset my account because I wasn't in the virtual store of Toshiba am connected is not registered I have the Toshiba Journ e Touch gift from a friend and does not know his password or e-mail Personal account 30736 ask the push-b
-
USB RS232 "is connected Port" "invalid property value".
I'm quite new to this so if all the below is not clear or needs more explanation Let me know and I will try to provide information. I'm trying to integrate a device in my LabView program. Of its guides, that I could find on the site OR mentioned most
-
Pavilion 15 P222ne: IDT driver for HP pavillion 15 P222ne
Please need help to install the driver for HP Pavilion P222e 15 IDT, as I formatted the partition for my healing also. After the format I can't see the beats audio Panel donot appear. Your help is very appreciated. Thanks in advance,
-
I want to install SP1 for FSX, but it says this (C:\Users\Home\Downloads\fsx_sp1_ENU.exe is not a valid Win32 application) What should I do to install it?