Need to query to find missing months between two dates.
A bank customer a monthly overview of databases (in the tens of millions of accounts)
The data are sent with a line per account each month. It is stored in a table called "ACCOUNTS_TAB".
Fields on registration, which
Column | Description | Example of format. |
* YRMTH-1 | Year and month of the snapshot | 6-character numeric, 4-digit year added to months of 2 digits, example 201301, 201311 |
* AccountID | Unique identifier for an account. | Integer, example 100098322 |
Opening balance - 1 | Initial account balance at the closing of the previous month | $30000 |
Closing balance - 1 |
The account balance at the end of the month of closing
$34200
Class-1 relative to investments
.....
...
.....
......
.....
Many more columns, two favorites (*) columns are alone, that you will need for the query. There are no columns to tell when an account is closed, or has just opened, and not separate "master account" - you use this single table for your query that results.
The table was in place from 200301, so many accounts have dozens of lines, if they have been open for many years and other only 1 or 2 ranks, if new.
Write a query to give just a list of accountDs that meet the following criteria.
- 1) has a record for specific 201503
- 2) was also a record for the month specific 201602
- 3) missing one or several months between these two records.
A good account which was opened from 201503 to 201602 inclusive would of course have lines for
201503
201504
201505
201506
201507
201508
201509
201510
201511
201512
201601
201602
It's good to hardcode the month of departure (201503), end of month (201602) and the actual number of months between them (10 exclusive or 12 inclusive) as part of your query.
Once again the account must meet all 3 criteria to be an account issue. If only, they have a partial set of these documents but do not have the month of departure, or is not the end of the month, it is not a problem, only when they have so specified and end early and not a full between game.
Help, please!
Maybe this...
-----
-The Dataset for the test begins
WITH dataset (ACCOUNT_NO, DATES)
AS (SELECT 100, DOUBLE 201503
UNION ALL
SELECT 100, DOUBLE 201504
UNION ALL
SELECT 100, DOUBLE 201505
UNION ALL
SELECT 100, DOUBLE 201506
UNION ALL
SELECT 100, DOUBLE 201507
UNION ALL
SELECT 100, DOUBLE 201508
UNION ALL
SELECT 100, 201509 OF THE DOUBLE
UNION ALL
SELECT 100, DOUBLE 201510
UNION ALL
SELECT 100, 201511 OF THE DOUBLE
UNION ALL
SELECT 100, DOUBLE 201512
UNION ALL
SELECT 100, 201601 DOUBLE
UNION ALL
SELECT 100, DOUBLE 201602
UNION ALL
SELECT 200, DOUBLE 201503
UNION ALL
SELECT 200, DOUBLE 201504
UNION ALL
SELECT 200, DOUBLE 201505
UNION ALL
SELECT 200, DOUBLE 201506
UNION ALL
SELECT 200, DOUBLE 201508
UNION ALL
SELECT 200, DOUBLE 201509
UNION ALL
SELECT 200, DOUBLE 201510
UNION ALL
SELECT 200, DOUBLE 201511
UNION ALL
SELECT 200, DOUBLE 201512
UNION ALL
SELECT 200, 201601 DOUBLE
UNION ALL
SELECT 200, DOUBLE 201602
UNION ALL
SELECT 300, DOUBLE 201503
UNION ALL
SELECT 300, DOUBLE 201504
UNION ALL
SELECT 300, DOUBLE 201505
UNION ALL
SELECT 300, DOUBLE 201506
UNION ALL
SELECT 300, DOUBLE 201507
UNION ALL
SELECT 300, DOUBLE 201508
UNION ALL
SELECT 300, DOUBLE 201509
UNION ALL
SELECT 300, DOUBLE 201510
UNION ALL
SELECT 300, DOUBLE 201511
UNION ALL
SELECT 300, 201601 DOUBLE
UNION ALL
SELECT 300, DOUBLE 201602
UNION ALL
SELECT 400, DOUBLE 201504
UNION ALL
SELECT 400, DOUBLE 201505
UNION ALL
SELECT 400, DOUBLE 201506
UNION ALL
SELECT 400, DOUBLE 201507
UNION ALL
SELECT 400, 201508 DOUBLE),
-The Dataset to test ends
-Hand with clause begins
ResultSet
AS (SELECT account_no,
CASE
WHEN COUNT)
CASE WHEN dates IN (201503, 201602) THEN 1 END)
COURSES (PARTITION BY account_no) = 2
AND (COUNT (DISTINCT SUBSTR (dates, 4)))
COURSES (PARTITION BY account_no) = 12
OR COUNT (DISTINCT SUBSTR (dates, 4))
COURSES (PARTITION BY account_no)<>
AND COUNT (DISTINCT SUBSTR (dates, 1, 4))
(PARTITION BY account_no) > 1
THEN
« Y »
ON THE OTHER
« N »
END
FLG
THE dataset---> replace with your table name
GROUP BY account_no, dates)
SELECT DISTINCT Account_no
FROM THE result set
WHERE flg = 'Y ';
-Hand with the ends of the clause
ACCOUNT_NO
-----------------------
100
300
200
See you soon,.
Manik.
Tags: Database
Similar Questions
-
Need help on the list of months between two Dates
Hi all
I have a table which has startdate and enddate and need a select to list all the months between these two dates for each given ID.
I did some tests and could not figure out how to get the startdate and enddate table (instead of hard coding) tests in the select statement.
Could someone please help on this (Oracle 11 g 2),
Thanks in advance!
create table testing( id number, start_date date, end_date date); insert into testing values(100, to_date('05-FEB-2011', 'DD-MON-YYYY'), to_date('28-MAY-2011', 'DD-MON-YYYY')); insert into testing values(200, to_date('20-JUN-2011', 'DD-MON-YYYY'), to_date('28-DEC-2011', 'DD-MON-YYYY')); commit; select * from testing; ID START_DAT END_DATE ---------- --------- --------- 100 05-FEB-11 28-MAY-11 200 20-JUN-11 28-DEC-11 Elapsed: 00:00:00.01 *for testing.id = 100:* select to_char(add_months(to_date('05-FEB-2011', 'DD-MON-YYYY'), l - 1), 'YYYY-Mon') Dates from (select level l from dual connect by level <= months_between(trunc(to_date('28-MAY-2011', 'DD-MON-YYYY'), 'MONTH'), trunc(to_date('05-FEB-2011', 'DD-MON-YYYY'), 'MONTH')) + 1); DATES ----------------- 2011-Feb 2011-Mar 2011-Apr 2011-May Elapsed: 00:00:00.01 *for testing.id = 200:* select to_char(add_months(to_date('20-JUN-2011', 'DD-MON-YYYY'), l - 1), 'YYYY-Mon') Dates from (select level l from dual connect by level <= months_between(trunc(to_date('28-DEC-2011', 'DD-MON-YYYY'), 'MONTH'), trunc(to_date('20-JUN-2011', 'DD-MON-YYYY'), 'MONTH')) + 1); DATES ----------------- 2011-Jun 2011-Jul 2011-Aug 2011-Sep 2011-Oct 2011-Nov 2011-Dec 7 rows selected.
SQL> select * from testing 2 / ID START_DAT END_DATE ---------- --------- --------- 100 05-FEB-11 28-MAY-11 200 20-JUN-11 28-DEC-11 SQL> select id, 2 to_char(add_months(start_date,column_value - 1),'YYYY-Mon') dates 3 from testing, 4 table( 5 cast( 6 multiset( 7 select level 8 from dual 9 connect by add_months(trunc(start_date,'MM'),level - 1) <= end_date 10 ) 11 as sys.OdciNumberList 12 ) 13 ) 14 order by id, 15 column_value 16 / ID DATES ---------- -------- 100 2011-Feb 100 2011-Mar 100 2011-Apr 100 2011-May 200 2011-Jun 200 2011-Jul 200 2011-Aug 200 2011-Sep 200 2011-Oct 200 2011-Nov 200 2011-Dec 11 rows selected. SQL>
SY.
-
get all the date of end of months between two dates
Hi all, I'll try to find together the date of end of months between two dates.
I have the following data in a table
WITH AS's Data1
(
SELECT To_Date('4/30/2009','mm/dd/yyyy') dt, 'TEST' lname FROM dual UNION ALL
SELECT To_Date('5/01/2009','mm/dd/yyyy') dt, "TEST2" lname FROM dual UNION all
SELECT To_Date('5/02/2009','mm/dd/yyyy') dt, "TEST3" lname FROM dual UNION all
SELECT To_Date('5/03/2009','mm/dd/yyyy') dt, "TEST4" lname FROM dual UNION all
SELECT To_Date('5/04/2009','mm/dd/yyyy') dt, "TEST5" lname FROM dual UNION all
SELECT To_Date('5/05/2009','mm/dd/yyyy') dt, "TEST6" lname FROM dual UNION ALL
SELECT To_Date('5/31/2009','mm/dd/yyyy') dt, 'TEST7' lname FROM dual UNION all
SELECT To_Date('6/01/2009','mm/dd/yyyy') dt, 'TEST' lname FROM dual
)
I would like to write an application that gives you all the end date for months between two dates
for example, if you give the date 9/1/4 and 5/6/9, the output should be
IF I give you the dates 01/04/09 AND 01/06/09, THEN output should beDT LNAME ------------------- 4/30/2009 TEST
as you can see, I want all the end dates of months between two dates by giving the output.DT LNAME ------------------- 4/30/2009 TEST 5/31/2009 TEST7
If I give you 06/05/09 and 05/06/09, and then does so no output because there is no end of month between these two dates.
Similarly, if I give you 30/04/09 and 30/04/09 then output should be 30/04/09 because it is an end of month date
anyone can help to write a query. Thank you very muchJin
Not sure if you need subquery, analytical functions for this.
According to me, which should solve your purpose.WITH data1 AS ( SELECT To_Date('4/30/2009','mm/dd/yyyy') dt, 'TEST' lname FROM dual UNION ALL SELECT To_Date('5/01/2009','mm/dd/yyyy') dt, 'TEST2' lname FROM dual UNION all SELECT To_Date('5/02/2009','mm/dd/yyyy') dt, 'TEST3' lname FROM dual UNION all SELECT To_Date('5/03/2009','mm/dd/yyyy') dt, 'TEST4' lname FROM dual UNION all SELECT To_Date('5/04/2009','mm/dd/yyyy') dt, 'TEST5' lname FROM dual UNION all SELECT To_Date('5/05/2009','mm/dd/yyyy') dt, 'TEST6' lname FROM dual UNION ALL SELECT To_Date('5/31/2009','mm/dd/yyyy') dt, 'TEST7' lname FROM dual UNION all SELECT To_Date('6/01/2009','mm/dd/yyyy') dt, 'TEST' lname FROM dual ) select distinct last_day(dt) dt,lname from data1 where dt between &start_date and &end_date and last_day(dt) <= &end_date
also, i have another request. how would i do this without using the data i provided. lets say, i tell you, give me alll the months end between two dates using dual in the from clause of a query. how would you do this in a query or pl/sql? thanks again
Can be like that
with data1 as( select &start_date+level-1 dt from dual connect by level <= &end_date-&start_date+1) select distinct last_day(dt) from data1 where dt between &start_date and &end_date and last_day(dt) <= &end_date order by last_day(dt)
See you soon!
BobinPublished by: Buga added query for updated the need
-
Display the months between two dates
Hello:
I need all the months between two dates. I entered two dates as January 15, 2001 and 2011-mar-03. I want the result as below.
JANUARY 15, 2011 - JANUARY 31, 2011
February 1, 2011 - February 28, 2011
MARCH 1, 2011 - MARCH 3, 2011
I held this result of sql query in oracle. Could you please suggest me?
Thanks in advance.
AbhishekSELECT GREATEST(st, ADD_MONTHS(TRUNC(st, 'MONTH'), (LEVEL - 1))) dt, LEAST(ed, LAST_DAY(ADD_MONTHS(TRUNC(st, 'MONTH'), (LEVEL - 1)))) ld FROM (SELECT DATE '2011-01-15' AS st, DATE '2011-03-03' AS ed FROM DUAL) CONNECT BY LEVEL <= MONTHS_BETWEEN(TRUNC(ed, 'MONTH'), TRUNC(st, 'MONTH')) + 1 ORDER BY 1; DT LD ------------------------ ------------------------ 15.01.2011 00:00:00 31.01.2011 00:00:00 01.02.2011 00:00:00 28.02.2011 00:00:00 01.03.2011 00:00:00 03.03.2011 00:00:00
HTH, Urs
-
Hello
I have two dates. start date and end date.
I want to extract months between two dates
months should be as
JAN
FEB
MAR
for example.
Start - 1-jan-2014
date of end - 31 - dec - 2014
How can I do this?
Thanks and greetings
CORINE
You should always use the function MONTHS_BETWEEN...
for example
SQL > ed
A written file afiedt.buf1 with t as (select date '' 2014-01-01 as start_date date ' 2014-12-31' as double end_date)
2 --
3 end of test data
4 --
5. Select to_char (add_months (start_date, rownum-1), 'My') by month
6 t
7 * connect by rownum<=>=>
SQL > /.LUN
---
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Ms
Oct
Nov
Dec12 selected lines.
And if you want that they display, separated by commas...
SQL > ed
A written file afiedt.buf1 with t as (select date '' 2014-01-01 as start_date date ' 2014-12-31' as double end_date)
2 --
3 end of test data
4 --
5 Select listagg (to_char (add_months (start_date, rownum-1), 'My'), ',') group by month (order by rownum)
6 t
7 * connect by rownum<=>=>
SQL > /.MONTH
-----------------------------------------------------------------------------------------------------------------
Jan, Feb, Mar, Apr, may, June, July, August, Sept, Oct, Nov, Dec -
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;
-
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,
PratesHi 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 -
How to find the difference between two dates in time except Sunday
Hi all
I have a table, as shown below.
I would like to know the difference between same tr_ids create_time, which should give out in hours except Sunday.SQL> select * from test; TR_ID CREATE_TIME CODE -------------------------------------------------- --------------------------------------------------------------------------- ---------- S12341 05-JUN-12 12.20.52.403000 AM 1003 S12342 11-JUN-12 11.15.33.182000 AM 1003 S12342 07-JUN-12 12.00.36.573000 PM 1002 S12343 20-JUN-12 12.34.37.102000 AM 1003 S12343 15-JUN-12 11.34.27.141000 PM 1002 S12344 01-JUL-12 10.01.06.657000 PM 1002 S12344 06-JUL-12 12.01.04.188000 AM 1003 S12341 31-MAY-12 11.20.38.529000 PM 1002
For example:
TR_ID: S12344
1002_Create_time: July 1, 12 PM 10.01.06.657000 (i.e. Sunday)
1003_Create_time: 12.01.04.188000 AM 6 July 12
1002 create time is 22:00 Sunday.
If the query must exclude only the hours of Sunday which is 10 p.m. to Monday 00 h which is 2 Hrs.
I tried the sub query after doing a search on this forum but I am not getting the desired output.
Need help to get the desired o/pSELECT count(*) FROM (SELECT ROWNUM RNUM,tr_id,create_time CT_1002 FROM test c WHERE c.tr_id='S12344' and ROWNUM <= (select (cast(a.create_time as date)-cast((select create_time from test b where a.tr_id=b.tr_id and code=1002) as date)) from test a where a.code=1003 and a.tr_id=c.tr_id) + 1) d WHERE to_char(cast((select create_time from test e where e.tr_id=d.tr_id and code=1002) as date) + RNUM - 1, 'DY') NOT IN('SUN');
Hello
If I unederstand the problem correctly, that's what you want:
WITH got_extrema AS ( SELECT tr_id , CAST (MIN (create_time) AS DATE) AS start_date , CAST (MAX (create_time) AS DATE) AS end_date FROM test GROUP BY tr_id ) SELECT tr_id , start_date, end_date -- If wanted , 24 * ( ( ( TRUNC (end_date, 'IW') -- Count -1 day for every full week - TRUNC (start_date, 'IW') ) / -7 ) + LEAST ( end_date -- If end_date is a Sunday , TRUNC (end_date, 'IW') + 6 -- consider it 00:00:00 on Sunday ) - CASE WHEN start_date >= TRUNC (start_date, 'IW') + 6 -- If start_date is a Sunday THEN TRUNC (start_date, 'IW') + 6 -- consider it 00:00:00 Sunday ELSE start_date END ) AS total_hours FROM got_extrema ;
I guess that you don't need to worry about fractions of a second. As you did in the code you have posted, I am to convert the TIMESTAMP to date values, because of DATE arithmetic and functions are so much better than what is available for timestamps.
Basically, it's just to find the number of days between start_date and end_date and multiplying by 24, with these twists:
(a) 1 day is deducted for each week between start_date and end_date
(b) if End_date is a Sunday, none of the end_date himself hours are counted
(c) If start_date is a Sunday, then all the start_date himself hours are counted. Why these hours should be counted? Because 1 day is already being deducted for the week which includes start_date, which contains only this Sunday.TRUNC (dt, 'IW') is the beginning of the ISO week containing dt; in other words, 00:00:00 the or before the dt last Monday. This is not the NLS parameters.
Of course, I can't test without some sample data and the exact results you want from these data. You may need a little something more If start_date and end_date are both on the same Sunday.
Whenever you have a problem, please post a small example of data (CREATE TABLE and only relevant columns, INSERT statements) of all of the tables involved.
Also post the results you want from this data, as well as an explanation of how you get these results from these data, with specific examples.
Always tell what version of Oracle you are using.
See the FAQ forum {message identifier: = 9360002} -
How to display each month between the date range
I want a query that gives me the number of months between two dates given for example, if I going January 1, 2009 and April 1, 2009 then I should get on February 1, 2009 and March 1, 2009 in my trips
Thank you very muchSrix wrote:
Thanks for the requestIt is not working do not when the effective date is differs from that in a year i.e start date January 1, 2009 and end date February 1, 2009, that it does not give u then required result
I don't know what you mean? The dates are in the same year.
-
Calculate business hours between two dates in a cursor
Hello, its me again (?).
Yesterday, I got a solution to a problem here where I need to calculate the hours between two dates, excluding Sat/Sun and from 09:00 to 18:00. I'm now putting this login in a PL/SQL block, so I can calculate it for each record in a slider, all by looping.
The logic above, I'm up here:with t (start_date ,end_date ) as (select to_date('22-oct-2012 09:00:00','dd-mon-yyyy hh24:mi:ss') start_dt, to_date('23-oct-2012 09:00:00','dd-mon-yyyy hh24:mi:ss') end_dt from dual ) , hrs (dt) as (select start_date from t union all select dt +1/24/60 from hrs where hrs.dt < (select end_date-1/24/60 from t) ) select count(*)/60 from hrs where to_char(dt,'dy') not in ('sat','sun') and to_number(to_char(dt,'hh24')) not between 18 and 23 and to_number(to_char(dt,'hh24')) not between 0 and 8 /
I really don't like if the performance is horrible because it will run once a month and should spend only 40-100 records.FOR c_record IN c_1 LOOP //For each record, check if the two dates meet the criteria and then raise the counters accordingly select to_date(c_record.REPORTADA,'dd-mon-yyyy hh24:mi:ss') INTO vFch1 FROM DUAL; SELECT to_date(c_record.INICIOREAL,'dd-mon-yyyy hh24:mi:ss') INTO vFch2 FROM DUAL; IF ((vHoras > 2) AND c_record.PRIORIDAD=3) THEN vContOk :=vContOk + 0; vContBad := vContBad+1; vContOt := vContOt+1; ELSE vContOk :=vContOk +1; vContBad := vContBad+0; vContOt := vContOt+1; END IF; IF ((vHoras > 4) AND c_record.PRIORIDAD=2) THEN vContOk :=vContOk + 0; vContBad := vContBad+1; vContOt := vContOt+1; ELSE vContOk :=vContOk +1; vContBad := vContBad+0; vContOt := vContOt+1; END IF; IF ((vHoras > 16) AND c_record.PRIORIDAD=1) THEN vContOk :=vContOk + 0; vContBad := vContBad+1; vContOt := vContOt+1; ELSE vContOk :=vContOk +1; vContBad := vContBad+0; vContOt := vContOt+1; END IF; END LOOP;
However, I can't find a way to use this connection even in this case
Could you help me?
Thank you!
Greetings,
NACEURN wrote:
I need to calculate the number of minutes between two dates, only count the hours from 9 to 18hs.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; /
For example:
SQL> select get_bus_minutes_between( 2 to_date('20-oct-2012 13:00:00','dd-mon-yyyy hh24:mi:ss'), 3 to_date('22-oct-2012 13:21:00','dd-mon-yyyy hh24:mi:ss') 4 ) work_minutes 5 from dual 6 / WORK_MINUTES ------------ 261 SQL>
SY.
-
Select the mountains between two dates
Hi all
How can I select all months between two dates. For example, if two dates are say 2008-05-25 and 2009-07-15, then I need following output
May-2008
June-2008
July-2008
August-2008
September-2008
October-2008
November-2008
December-2008
January-2009
February-2009
March-2009
April-2008
May-2009
-June 2009
July-2009
Thank you
SujnanTry this one
SQL> SELECT TO_CHAR(add_months(TRUNC(to_date('25/05/2008','DD/MM/YYYY'),'MM') ,(level-1)),'fmMonth-YYYY') 2 FROM dual 3 CONNECT BY level <= months_between(to_date('15/07/2009','DD/MM/YYYY'),to_date('25/05/2008','DD/MM/YYYY')) + 2; TO_CHAR(ADD_MO -------------- May-2008 June-2008 July-2008 August-2008 September-2008 October-2008 November-2008 December-2008 January-2009 February-2009 March-2009 TO_CHAR(ADD_MO -------------- April-2009 May-2009 June-2009 July-2009 15 rows selected. SQL>
-
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;
-
Get the number of months between the dates.
Hi I need to get the exact number of months between the dates. So if I'm Sysdate - to_date(31-JAN-2011) I should get something like 8.4 months. Months_between function doesn't quite give me what I need. Is it possible that I can do this?876056 wrote:
Hi I need to get the exact number of months between the dates. So if I'm Sysdate - to_date(31-JAN-2011) I should get something like 8.4 months. Months_between function doesn't quite give me what I need. Is it possible that I can do this?I don't see how you get 8.4 months. The counted months are February, March, April, may, June, July, August and, as of today, 9 and change the days of September. Unless I forgot the lessons of counting, I learned in kndergarten is 7 full months and a bit.
Maybe you want something like:
SQL> select months_between(Sysdate, to_date('01-JAN-2011', 'dd-mon-yyyy')) mb, 2 (Sysdate - to_date('01-JAN-2011', 'dd-mon-yyyy'))/30 div30 3 from dual; MB DIV30 ---------- ---------- 8.27800142 8.38726813
If you get the form date a table, you can use trunc (date_column, 'mm') at the date of the first day of the month.
John
-
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 to calculate the number of days/weeks/months between 2 dates?
Hello
I would like to know how to calculate the number of days/weeks/months between 2 dates in OBIEE 11 g, for example, I have 26/05/2013 and 19/05/2013, then I want to get 7 days.
Thank you!
JamieHi Jamie,
Through this links...
http://www.bravesoft.com/blog/?p=682
http://twobiee.blogspot.in/2012/01/working-with-date-differences.htmlMark as correct it allows u...
Thank you...
Maybe you are looking for
-
HP Pavilion G4-2212TU Windows 7 drivers
Recently, my company have purchase 5 units HP Pavilion G4-2212TU, come with Windows 8, but our custome software cannot run on windows 8, then we change back to windows 7, but we cannot find drivers on the canvases, can someone help here?
-
My Windows XP PC is so slow that I can't use it on Normal Mode.
My PC Windows XP has slowed down to the point wjere, it is unusable when I start in Normal Mode. It is slow to start and slow to open a session, it will freeze in Normal Mode and I have to close it using the PC switch. I was running and trying to s
-
Change of OS (XP SP3) from Dutch into English
Hello I just bought a laptop computer whose OS (XP SP3) is in Dutch. I would like to change it to English. Any idea? Kind regards
-
I forgot the password for vista on Acer laptop
I don't remember the administrative password for Windows Vista on my Acer laptop & I DO NOT HAVE THE DISK
-
receiver wireless Xbox 360 for windows works do not at all
Used the receiver wireless xbox 360 for windows for a long time, worked well. Unplugged to move the pc, when I have not reconnected no light on the receiver, windows not see or does not detect. Uninstalled the drivers, tried different usb port, nothi