Oracle SQL: Date Difference in Days, Months and Years

with mytab as
(
select sysdate dt1, (sysdate-951) dt2 from dual
)
select
    case when
        round(round(last_day(dt2) - dt2) + round(dt1 - trunc(dt1,'month'))) >   to_char(last_day(dt2),'dd')
    then
        round(round(last_day(dt2) - dt2) + round(dt1 - trunc(dt1,'month'))) - to_char(last_day(dt2),'dd')
    else
        round(round(last_day(dt2) - dt2) + round(dt1 - trunc(dt1,'month')))
    end days,
    mod(floor(months_between(dt1,dt2)),12) months,
    floor(months_between(dt1,dt2)/12) years
from
    mytab;


Related Posts:
- Playing With Truncate and Date
- Oracle: Some Important Date Queries
- Dates Difference in days, hours, minutes & seconds
- ORA-01830 date format picture ends before converting entire input string
- Oracle: Convert seconds to time - hh:mi:ss
- Oracle: convert time hh:mi:ss to seconds

6 comments:

  1. Good one to refer. When I passed with mytab as sysdate-1 for dt2, I got the result as DAYS = 31

    (
    select sysdate dt1, (sysdate-1) dt2 from dual
    )

    What do I need to use for getting date difference between two timestamps in seconds?

    ReplyDelete
    Replies
    1. check this link for difference in seconds
      http://nimishgarg.blogspot.in/2009/12/get-dates-difference-in-days-hours.html

      Delete
  2. This comment has been removed by the author.

    ReplyDelete
  3. Question need command


    Display the difference in joining date of employee Ashish and shreyas

    ReplyDelete
  4. Nice article.Thanks for the post.
    SQL training in Pune

    ReplyDelete
  5. Choosing an Airport Taxi Lisbon service is one of the most convenient ways to travel after your flight. Professional drivers monitor flight arrivals to accommodate delays and ensure timely pickups, giving travelers complete peace of mind. Whether your flight arrives early in the morning or late at night, you can count on prompt and efficient transportation tailored to your schedule.

    ReplyDelete