web
You’re offline. This is a read only version of the page.
close
Skip to main content

Notifications

Announcements

Community site session details

Community site session details

Session Id :
Power Platform Community / Forums / Power Apps / DateDiff in months wit...
Power Apps
Unanswered

DateDiff in months with decimal digits

(0) ShareShare
ReportReport
Posted on by 3,458 Super User 2024 Season 1

Hi all,

 

I am trying to find a way to calculate a DateDiff in months but with 2 Decimal digits.

 

So for example the DateDiff output for "01.01.2013" and "06.03.2013" (Format "dd.mm.yyyy") should be 2,2

 

Thanks in advance for your help

Categories:
I have the same question (0)
  • Community Power Platform Member Profile Picture
    on at

    Hi,

     

    What is the logic behind the second 2? As to me the DateDiff in months is just 2?

    I mean you could do string manipulation such as:

    HenryARPhillips_0-1613475048047.png

     



    But I presume the above is not what you are after?

  • PowerRanger Profile Picture
    3,458 Super User 2024 Season 1 on at

    Well, this is required for a calculation where we do need the exact difference in months.
    So what I would do manually:

    "01.01.2013" and "06.03.2013"

    1. 01.012013 - 31.01.2013 = 1 month

    2. 01.02.2013 - 28.02.2013 = 1 month

    3. 01.03.2013 - 06.03.2013 = 6 days = (1/31)*6 = 0,1935...

    ==> 2,1935 months ==> 2,2 Months

     

  • Verified answer
    PowerRanger Profile Picture
    3,458 Super User 2024 Season 1 on at

    Hi now came up with this solution:

     

    Set(
     varMonthsDiff,
     DateDiff(
     dtpStartDate.SelectedDate,
     dtpEndDate.SelectedDate,
     Months
     )
    );
    Clear(MyDateTable);
    ForAll(
     Sequence(varMonthsDiff + 1),
     Collect(
     MyDateTable,
     {
     CurrentSequenz: CountRows(MyDateTable),
     StartDate: dtpStartDate.SelectedDate,
     EndDate: dtpEndDate.SelectedDate,
     FirstDayOfMonth: Date(
     Year(
     DateAdd(
     dtpStartDate.SelectedDate,
     CountRows(MyDateTable),
     Months
     )
     ),
     Month(
     DateAdd(
     dtpStartDate.SelectedDate,
     CountRows(MyDateTable),
     Months
     )
     ),
     1
     ),
     LastDayOfMonth: Date(
     Year(
     DateAdd(
     dtpStartDate.SelectedDate,
     CountRows(MyDateTable),
     Months
     )
     ),
     Month(
     DateAdd(
     dtpStartDate.SelectedDate,
     CountRows(MyDateTable),
     Months
     )
     ) + 1,
     0
     )
     }
     )
    );
    ClearCollect(
     MyDateTable2,
     AddColumns(
     MyDateTable,
     "DaysInMonth",
     DateDiff(
     FirstDayOfMonth,
     LastDayOfMonth
     ) + 1,
     "MonthCounter",If(EndDate > LastDayOfMonth,1,RoundUp((1/(DateDiff(
     FirstDayOfMonth,
     LastDayOfMonth
     ) + 1))*(DateDiff(FirstDayOfMonth,EndDate,Days)+1),2))
     )
    )

     

     

    Might not be the cleanest solution biut seems to be working.

  • PowerRanger Profile Picture
    3,458 Super User 2024 Season 1 on at

    And to get the DateDiff out of the Collection I use: 

     
    Sum(MyDateTable2,MonthCounter)
  • daisaacs Profile Picture
    4 on at

    So I implemented this exactly as is into my app, and the only issue I'm seeing as that when I add the initials dates in for Both Start and End Date, the DateDiff outputs the correct value.

    When When Testing - I update the End date again (by 1 day), and can see the output change correctly (IE: bother the number value and decimal values updated correctly).

    However if i do the exact same thing for the Start Date, the number value, changes correctly, but the decimal always stays the same for some reason

    Examples

    1. Initial Values Set (Where Term in Months is the Date Difference)

    daisaacs_0-1631186288839.png


    2. When I update the Expire Date - the value for Term in Months updates

    daisaacs_1-1631186341700.png


    3. If I revert back - it updates again correctly

    daisaacs_2-1631186385842.png


    4. However no when i update the start Date - only the integer portion of the 'Term in Months' updates NOT the decimal portion ()decimal always remains the same

    Example 1

    daisaacs_3-1631186436128.png

    Example 2

     

    daisaacs_4-1631186451767.png

     









  • i-technology Profile Picture
    2 on at

    Was struggling with this, and finally settled for 

    var nbrMonths = YEARFRAC(startDate, endDate) * 12
    var result = DIVIDE(something, nbrMonths, 0)

     

    Was much easier than i thought 🙂 

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Forum hierarchy changes are complete!

In our never-ending quest to improve we are simplifying the forum hierarchy…

Ajay Kumar Gannamaneni – Community Spotlight

We are honored to recognize Ajay Kumar Gannamaneni as our Community Spotlight for December…

Leaderboard > Power Apps

#1
WarrenBelz Profile Picture

WarrenBelz 717 Most Valuable Professional

#2
Michael E. Gernaey Profile Picture

Michael E. Gernaey 329 Super User 2025 Season 2

#3
Power Platform 1919 Profile Picture

Power Platform 1919 268

Last 30 days Overall leaderboard