Using trunc as difference measure btwn two dates
I have a SQL query that works smoothly. It takes the difference between sets of dates that are >=0 and <=0. here it is:
SELECT createdate, id, objid, start_date, end_date
FROM greggs_date, HNEMap
where active =1
and trunc (createdate-start_date) >=0 and trunc (createdate-end_date) <=0;
Problem is I can't output the differences. In MS SQL Server you can show the number of days difference with the datediff function named in the SELECT part of the SQL statement not so with trunc used to get date differences. How can this query be rework to show the actual days of difference between start and end from create date.
Hi,
robleh7 wrote:
I have a SQL query that works smoothly. It takes the difference between sets of dates that are >=0 and <=0. here it is:
SELECT createdate, id, objid, start_date, end_date
FROM greggs_date, HNEMap
where active =1
and trunc (createdate-start_date) >=0 and trunc (createdate-end_date) <=0;
Problem is I can't output the differences. In MS SQL Server you can show the number of days difference with the datediff function named in the SELECT part of the SQL statement not so with trunc used to get date differences. How can this query be rework to show the actual days of difference between start and end from create date.
Sorry, I don't understand the problem.
TRUNC (createdate - startdate) is just a NUMBER. You can display it just like any other NUMBER.
SELECT k.hiredate AS base_date
, d30.hiredate
, TRUNC (k.hiredate - d30.hiredate) AS dif
FROM scott.emp k
CROSS JOIN scott.emp d30
WHERE k.ename = 'KING'
AND d30.deptno = 30
Output:
BASE_DATE HIREDATE DIF
17-Nov-1981 20-Feb-1981 270
17-Nov-1981 22-Feb-1981 268
17-Nov-1981 28-Sep-1981 50
17-Nov-1981 01-May-1981 200
17-Nov-1981 08-Sep-1981 70
17-Nov-1981 03-Dec-1981 -16
Post a complete test script (including CREATE TABLE and INSERT statements, if needed) and the results you want from that script.
Similar Messages
-
Facing problem while calculating the difference between the two dates?
Hi
I am using this code to calculate the difference between the two dates :
import java.util.Calendar;
import java.util.*;
public class DateDifferentExample
public static void main(String[] args)
// Creates two calendars instances
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
// Set the date for both of the calendar instance
cal1.set(2006, 12, 30);
cal2.set(2007, 05, 03);
// Get the represented date in milliseconds
long milis1 = cal1.getTimeInMillis(); // getting error here
long milis2 = cal2.getTimeInMillis(); // getting error here
// Calculate difference in milliseconds
long diff = milis2 - milis1;
// Calculate difference in seconds
long diffSeconds = diff / 1000;
// Calculate difference in minutes
long diffMinutes = diff / (60 * 1000);
// Calculate difference in hours
long diffHours = diff / (60 * 60 * 1000);
// Calculate difference in days
long diffDays = diff / (24 * 60 * 60 * 1000);
System.out.println("In milliseconds: " + diff + " milliseconds.");
System.out.println("In seconds: " + diffSeconds + " seconds.");
System.out.println("In minutes: " + diffMinutes + " minutes.");
System.out.println("In hours: " + diffHours + " hours.");
System.out.println("In days: " + diffDays + " days.");
but i am getting this error :
The method getTimeInMillis() from the type calendar is not visible
Please suggest!!// Get the represented date in milliseconds
long milis1 = cal1.getTime().getTime(); // getting error here
long milis2 = cal2.getTime().getTime(); // getting error here Hope this works for you!! -
How to get the difference between these two dates
Hello Friends,
I need to get the difference between these two fields which store dates but with varchar2 data types
SELECT pac.segment1, pac.segment2 emp_no, pac.segment3 NAME,
pac.segment4 POSITION, pac.segment5 start_date, pac.segment6,
pac.segment7
FROM per_analysis_criteria pac, fnd_id_flex_structures_vl ffs
WHERE ffs.id_flex_structure_code = 'Employee Rejoin'
AND ffs.id_flex_num = pac.id_flex_num
AND TO_CHAR (TO_DATE (pac.segment7, 'YYYY/MM/DD HH24:MI:SS'))
- TO_CHAR (TO_DATE (pac.segment6, 'YYYY/MM/DD HH24:MI:SS')) > 1;
my query is something like this...
am trying to find the difference between the last two columns but with not much luck..
can some one suggest me a solution pleaseSELECT pac.segment1, pac.segment2 person_id, pac.segment3 NAME,
papf.employee_number, paaf.supervisor_id, pac.segment4 POSITION,
pac.segment5 start_date, pac.segment6, pac.segment7,
papf2.email_address,
( TO_DATE (TO_CHAR (pac.segment7), 'DD-MON-YYYY HH:MI:SS AM')
- TO_DATE (pac.segment6, 'DD-MON-YYYY HH:MI:SS AM')
+ 1
) difference,
POST.email_address
FROM per_analysis_criteria pac,
apps.fnd_id_flex_structures_vl ffs,
per_all_people_f papf,
per_all_assignments_f paaf,
per_all_people_f papf2,
(SELECT email_address, person_id
FROM per_all_people_f
WHERE person_id IN (
SELECT person_id
FROM per_all_assignments_f
WHERE position_id IN (SELECT position_id
FROM per_positions
WHERE NAME LIKE 'HR Manager.704.')
AND TRUNC (SYSDATE) BETWEEN effective_start_date
AND effective_end_date)
AND TRUNC (SYSDATE) BETWEEN effective_start_date AND effective_end_date
AND business_group_id = fnd_profile.VALUE ('PER_BUSINESS_GROUP_ID')) POST
WHERE ffs.id_flex_structure_code = 'Employee Rejoin'
AND TO_CHAR (papf.person_id) = pac.segment2
AND ffs.id_flex_num = pac.id_flex_num
AND TRUNC (SYSDATE) BETWEEN papf.effective_start_date
AND papf.effective_end_date
AND papf.current_employee_flag = 'Y'
AND papf.person_id = paaf.person_id
AND TRUNC (SYSDATE) BETWEEN paaf.effective_start_date
AND paaf.effective_end_date
AND papf.person_id = paaf.person_id
AND papf2.person_id = paaf.supervisor_id
AND paaf.primary_flag = 'Y'
AND TRUNC (SYSDATE) BETWEEN papf2.effective_start_date
AND papf2.effective_end_date
AND papf2.current_employee_flag = 'Y'
and ( TO_DATE(to_char(pac.segment7), 'DD-MON-YYYY HH:MI:SS AM')-TO_DATE (pac.segment6, 'DD-MON-YYYY HH:MI:SS AM')+1) >1
last line is giving me the error pls suggest a solution -
We have two Nexus 7000, and I need use them with OTV between two data Centers separated 25 miles, but I don´t know what are the optimal values about bandwidth and delay (ms) for extended VLANs IDs (production and DAG replication) for Microsoft Exchange environment. Can somebody tell me please which are the values required for operate OTV in optimal conditions in this case? We have about 35 000 users that will use that platform of email. Thanks a lot for your comments. Regards.
We have two Nexus 7000, and I need use them with OTV between two data Centers separated 25 miles, but I don´t know what are the optimal values about bandwidth and delay (ms) for extended VLANs IDs (production and DAG replication) for Microsoft Exchange environment. Can somebody tell me please which are the values required for operate OTV in optimal conditions in this case? We have about 35 000 users that will use that platform of email. Thanks a lot for your comments. Regards.
-
Difference Bet~n two dates?
Hi
can u write a function which can return a string having the difference between two input dates? That must be in X Year,X days, X hours,X minutes,X seconds.
Just think One person was born in 01/01/1979 05:20:30.
Today just now the date is 25/09/2004 16:51:30.
What is the age of that person right now?
Please help me in detail in SQL code.
FARHADThere are several ways you could do this.
The following example should help you.
SQL> declare
2 date1 date;
3 date2 date;
4 v_years pls_integer;
5 v_days pls_integer;
6 v_partial_days number;
7 v_hours pls_integer;
8 --v_hours2 number;
9 v_minutes pls_integer;
10 v_dseconds pls_integer;
11 v_dseconds2 pls_integer;
12 v_seconds pls_integer;
13 begin
14 date1 := to_date('25/09/2004 16:21:29','DD/MM/YYYY HH24:MI:SS');
15 date2 := to_date('01/01/1979 05:20:30','DD/MM/YYYY HH24:MI:SS');
16 select trunc(months_between(date1,date2)/12) years
17 into v_years
18 from dual;
19
20 select trunc(date1 - add_months(date2, 12*v_years))
21 into v_days
22 from dual;
23
24 select trunc(((date1 - add_months(date2,12*v_years)) - v_days)*24)
25 into v_hours
26 from dual;
27
28 select to_number(to_char(date1,'MI'))*60 + to_number(to_char(date1,'SS')),
29 to_number(to_char(date2,'MI'))*60 + to_number(to_char(date2,'SS'))
30 into v_dseconds,v_dseconds2
31 from dual;
32 if v_dseconds < v_dseconds2 then
33 v_dseconds := v_dseconds + 3600;
34 end if;
35 v_minutes := trunc((v_dseconds-v_dseconds2)/60);
36 v_seconds := v_dseconds - v_dseconds2 - v_minutes*60;
37
38 dbms_output.put_line(v_years);
39 dbms_output.put_line(v_days);
40 dbms_output.put_line(v_hours);
41 dbms_output.put_line(v_minutes);
42 dbms_output.put_line(v_seconds);
43 end;
44 /
25
268
11
0
59
PL/SQL procedure successfully completed. -
How to calculate the month difference between two date char. in Query?
Customers would like to see how many months passed between two date type of characteristics (e.g., the month difference between the current date and the scheduled delivery date in the record) and put the result into the column as KF.
We would have to grab the fiscal year/period kind of value and then do the subtraction, e.g., if the current date value is 2/28/2008 and the scheduled delivery date value in the record is 12/01/2007, the correct result should be 2 month difference between these two date values, but could someone here give us the technical light on how to make this happen in query design?
Thanks and we will give you reward points for the correct anwsers!Hi Kevin,
The Badi is RSR_OLAP_BADI.
You can create an implementation using Transaction SE18.
The implementation is per cube and is defined in the filters.
In the Implementation you have the following methods :
1. Define : Here you will provide the Keyfigure you need as a virtual one.
2. Initilialize : Any Init Function you want to do.
3. Compute. This is called per datarecord and here you can cimpute your value.
Hope this helps.
Pralay Ahluwalia -
Calculating difference between two dates in Variable Exits
Hi,
I need to calculate the difference between the two dates in months in Variable exits. I want the result in months so that I need to find out the Average Usage.
How can I find the difference between them in months.
Thanks
Dave.Hi Christophe, Senthil
Sorry for late response, I checked this MONTHS_BETWEEN_TWO_DATES_NEW in SE37/SE38 and about the date they are going to enter at query run time it should be like 03/03/2006 to 08/03/2006 and I should get in 5 months and or if the date range 03/15/2006 to 08/03/2006 and I should get like 4.5 months. Please could you tell me how to get the values in months or please give me a functional module so that I can use.
Thanks
Dave. -
Difference between two dates in seconds/milliseconds with Expressions
Hi,
I need to write a query using Expression(Builder) which calculates the difference between two columns (date/timestamps). As of other requirements I am not able to use JPQL, so I tried to create the query with the Expression framework. The difference between the two dates can be calculated with the
ExpressionMath.substract(...)
method. The result is a Date-like object storing the difference between both dates. But how can I cast this difference to a long or something like this with expressions?
Thanks,
ThomasDate functions are very database dependent, as each database has its own set of functions for processing dates.
The functions are defined in the Expression class, you can try,
truncateDate, roundDate, or datePart
http://www.eclipse.org/eclipselink/api/1.1.2/org/eclipse/persistence/expressions/Expression.html#truncateDate(java.lang.String)
http://www.eclipse.org/eclipselink/api/1.1.2/org/eclipse/persistence/expressions/Expression.html#roundDate(java.lang.Object)
http://www.eclipse.org/eclipselink/api/1.1.2/org/eclipse/persistence/expressions/Expression.html#datePart(java.lang.String)
James : http://www.eclipselink.org -
[Urgent] Need help calculating difference between two dates
I'm trying to write a code to display the current day and time, then accept two dates from the user and display the difference between the two dates. To display the current date and time, I've used the SimpleDateFormatter library but I'm having difficulty calculating the difference between two dates. Could someone please help me with this?
Below is my code so far
import java.util.Date;
import java.util.Scanner;
import java.text.SimpleDateFormat;
public class DateFormatter {
public void displayNow()
Date todaysDate = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");
String formattedDate = formatter.format(todaysDate);
System.out.println("Today's date and time is: "+formattedDate);
public void calculateDifference(Date startDate, Date endDate)
/* This is whre i need help! */
public static void main(String[] args)
DateFormatter df = new DateFormatter();
Scanner sc = new Scanner(System.in);
df.displayNow();
System.out.println("Please enter a date: ");
String date1 = sc.next();
System.out.println("Please enter another date: ");
String date2 = sc.next();
}The methods displayNow() and calculateDifference(Date startDate, Date endDate) are essential and cannot be skipped out.tarahmarie101 wrote:
Dude. I've tried doing assignments under pressure, and it doesn't work. Here's a piece of free advice. Start earlier next time, don't put "urgent" in the title of your post b/c it just pisses people off around here--and is a sure sign of an overdue homework assignment which no one around here likes helping with, and try to ask intelligent questions--don't just say "Help me!"
Of course, it takes some time to learn what the intelligent questions are. You have my sympathy. Try asking questions about how to do a particular task, instead of asking people to tell you what to do. It starts to get easier after a while.
actually dude i started on this on monday.. but there were so many other stuff to do along with this.. and i did try referring up the Calendar utility but it was a bit confusing actually.. it was only after that did i come to this forum.. nor am i very good at Java.. anyhoo thanks for your sympathies :P -
Calculate the Difference Between two dates excluding weekends and Holidays
Hi,
We need to calculate the difference between the two dates by excluding the Local public holidays (It is global and varies across countries) and weekends should not be included in calculation for a business day in OBIEE.
We have two dates: Open date and close date when ever close date is null we are calculating age based on taking the current timestamp and need to exclude the weekends and Holidays when ever the close date is null.
Ex:
Col1 col2 Total
11/9/2010 2:46:38 PM Null 13
11/2/2010 8:06:26 PM 11/3/2010 5:37:03 PM 1
(In the Total we shouldn't include the weekends,holidays)
Please let me know how to calculate the difference between two dates by excluding the weekends and holidays.
Thanks
Edited by: user10441472 on Nov 22, 2010 3:14 PMYou already asked this question and I answered it...
Re: calculation of Business day in OBIEE -
(Groovy Expression) Get the no. of days between two dates
Hi All,
I am using ADF-BC-11g to create an entity object with 2 specific columns ActualDate and EstimatedDate both of Date type. I also want an additional field DaysBetweenTwoDates showing the difference between these two dates. Hence, I add another attribute DaysBetweenTwoDates in my entity object and after removing the Persistent property, I modify the expression field as ActualDate - EstimatedDate. When I test my AM, I get an error as below:
*(oracle.jbo.JboException) JBO-29000: Unexpected exception caught: groovy.lang.MissingMethodException, msg=No signature of method: java.sql.Date.minus() is applicable for argument types: (java.sql.Date) values: {2009-04-01}*
Can anyone please tell me how to achieve the same?
Please note that I can not add a new column DaysBetweenTwoDates in the table nor can I have a new VO attribute subtracting and storing the difference as there are some logical and refreshing constraints.
Any suggestions would be really helpful.
Thanks
NeerajThanks John,
Oops...I did not think on this ground at all. Thanks for directing towards right direction. However, just to know, is that possible anyways thorugh groovy expression? Do we have any docs where we can search for the functions available in groovy expression?
Regards,
Neeraj -
Can we use Trunc,Substr in Excel templates
Hi All,
I have a date xml tag with value like "2012/04/01 00:00:00" i need to show this in excel output as "01-APR-2012".
I am using Excel template, need your help to achieve the same.
I tired to use Trunc,Substr,Format date but nothing is working.
Please give me your valuable inputs to solve this issue.
Thanks
RajehsVarma,
Thanks for the reply, i have already checked the link but it doesn't have syntax to use Trunc,substr etc. functions.
Also date in example is - "1996-02-03T00:00:00.000-07:00" , but in my case date format is different "2012/01/01 00:00:00".
Thanks
Rajesh -
How to get two date difference in Day/hour/min/secs pl
First of all,
Hello to All, i am new to Oracle DB, but i have little experience in Other Database such as Sybase, sql server etc
please kindly help me
in DoctorChart table i have DocName,Id#,Citcotype,Medtype,AdmitDate,DischargeDate(both admitdate & Discharge date is date formatted columns)
so how can i get the below differenceTime (which means Dischargedate-Admit Date in below format i.e, Day,Hours,Minutes,Seconds...)
DoctorName, ID #, Citco type, MEDtype, DifferenceTime
========= === ======= ======= ===========
Dr. KindaEmesko, 20045, Replace OutCard, ICH, 0 day 9 hours 11 minutes
Dr. KindaEmesko, 20098, Replace OutCard, ICH, 1 day 2 hours 34 minutes
Dr. KindaEmesko, 20678, Replace OutCard, ICH, 2 day 23 hours 52 minutes
Dr. KindaEmesko, 20212, Replace OutCard, ICH, 4 day 1 hours 00 minutes
Dr. KindaEmesko, 20345, Replace OutCard, BED, 3 days 14 hours 15 minutes
Dr. KindaEmesko, 20678, Replace OutCard, BED, 9 days 21 hours 52 minutes
Dr. KindaEmesko, 20015, Signature Overlay, Rest, 0 days 3 hours 29 minutes
Dr. KindaEmesko, 45678, Signature Overlay, Rest, 0 days 1 hours 29 minutes
Same way how can i get the Average Time for the above result (without ID columns)
DoctorName, Citco type, MEDtype, Avg DifferenceTime
========= === ======= ======= ===========
Dr. KindaEmesko, Replace OutCard, ICH, 2 day 1 hours 00 minutes
Dr. KindaEmesko, Replace OutCard, BED, 6 days 17 hours 15 minutes
Dr. KindaEmesko, Signature Overlay, Rest, 0 days 2 hours 29 minutes
Please just tell me how to get the two dates difference as day/hour/minute format
as well as how to get avg ( two dates difference as day/hour/minute format)
Please Help me
Thanks in advanceWell, instead of all these suggested manipulations you can simply use intervals. Oracle uses day as a unit in date arithmetic, so Dischargedate-Admit Date is number od days between two dates. Built-in function numtodsinterval can be used to convert it into interval. For example:
SQL> with t as (
2 select trunc(sysdate) - 2 Admit_Date,
3 sysdate Discharge_Date
4 from dual
5 )
6 select numtodsinterval(Discharge_Date - Admit_Date,'DAY') Hospital_Stay
7 from t
8 /
HOSPITAL_STAY
+000000002 00:01:08.000000000
SQL> SY. -
Difference between Two Date Should come into Text Item
Dear All,
i want to get difference between two date into text Item :P36_C in On Change java script.
i have two Date Item :P36_A and :P36_B .i have extract these date value from table then difference comes into Text Field :P36_C.
Now i want if i change Date into Item :P36_A or Item :P36_B then Defference between two date Should Come into Item :P36_C .
So i have use Java Script Code to do this
<script>
function diffdat(){
function getVal(item){
if($x(item).value != "")
return parseFloat($x(item).value);
else
return 0;
$x('P36_C').value =
getval((TO_DATE('P36_B', 'DD-MON-YYYY'))-
getval(TO_DATE('P36_A', 'DD-MON-YYYY')))+1;
</script>
i have put this into Item HTML Form Element Attributes
onChange="javascript:diffdat();"it's not woring .
How to work that Code with dates.
ThanksYou can always create your own difference function based on your own criteria. You can modify this to suit your needs.
CREATE OR REPLACE FUNCTION CALC_OFFICE_DAYS(date1 DATE, date2 DATE)
RETURN NUMBER
IS
v_begin_date DATE := date1;
v_end_date DATE := date2;
v_office_start_time VARCHAR2(10) := '09:30 AM';
v_office_end_time VARCHAR2(10) := '06:30 PM';
v_comp_begin_time DATE;
v_comp_end_time DATE;
v_days PLS_INTEGER := 0;
v_hrs NUMBER := 0;
v_ttltm NUMBER;
BEGIN
select trunc(v_end_date) - trunc(v_begin_date)
into v_days
from dual;
select to_date(to_char(sysdate,'DD-MM-YYYY')||' '||to_char(v_begin_date,'HH24:MI'),'DD-MM-YYYY HH24:MI')
into v_comp_begin_time
from dual;
select to_date(to_char(sysdate,'DD-MM-YYYY')||' '||to_char(v_end_date,'HH24:MI'),'DD-MM-YYYY HH24:MI')
into v_comp_end_time
from dual;
select (v_comp_end_time - v_comp_begin_time)/24 into v_hrs from dual;
IF v_hrs > 4 then
v_ttltm := v_days + .5;
ELSE
v_ttltm := v_days;
END IF;
return v_ttltm;
END;
As has been noted, this question is best posted on the PL/SQL forum. -
Difference between two dates is required in years & months
Hi all,
<b>1.</b> I want difference of two dates in years & months. For e.g. date1 is 29.09.1998 & date2 is 02.05.2001. I want date2-date1 to be calculated & displayed as 2.7 (yrs)in BEx.
<b>2. </b> Also, while calculating overalll result it should calculate as :
E.g. 2.7+ 2.6 = 5.1 (yrs)
Right now I am getting difference in days. Is there any way to convert it in yrs & months.
Note:string 'yrs' is not required
Thanks in advance.
HimanshuHi,
Reply by Arun was immensely helpful.
To do calculation I used the following formula.
TRUNC ( 'DATE DIFFERENCE' / 365 ) + TRUNC ( FRAC ( 'DATE DIFFERENCE' / 365 ) * 12 ) / 100
where 'DATE DIFFERENCE' is difference of two dates in days (Employment start date - employment end date). By this I am getting number of days in years & months.
Maybe you are looking for
-
How can I "spray on" a title in PE8?
Hi, I work for a coatings company. I want to start a video by having the name of my product appear on a background as if it were being sprayed with a paint gun. Does anyone know if I can at least approximate this in PE8? Thanks! Steve P.S. As fate wo
-
Number of records in Delta Queue in table level.
Hi All, I want to know the number of records in Delta Queue for a particular database in Table level. Right now in Production, i dont have access to TCODE RSA7. I just trying to check the Table TRFCQOUT but i am unable to see the exact count of recor
-
I have 3.7g quad core pc with 8gb of ram unning windows 8.1. When I playback songs using itunes, I have the latest 64 bit version for windows, there is noticeable and frequent skips in playback. When I play the same songs in windows media player, und
-
Passing Values back from Custom Tag
I'm using custom tags, and I'm trying to pass back values to the JSP page from a tag which is iterating over values it gets from an Array. But for some reason I can't access the values. Here is the Tag: public class MemberHelper extends TagSupport im
-
What's my Satellite model?
Hi Guys, Here is a screen shot from TOSHIBA PC Diagnostic Tool: Screen What driver should I download? Thank You