Forum Discussion
DataVitalizer
Super User
7 years agoCalculating the difference between two dates in Years, Months, and Days
Hi Community, I am working on a report where I have to calculate the difference between two dates (a specific date, and today) then show the resulat in the following format 00years - 00months - 00da...
- 7 years ago
DataVitalizer Oh !! Ok, please try this (Just added two more conditions in the SWITCH statement)
Hopefully, this should fix all your test cases :-) Fingers Crossed !!
Final = VAR _Years = FLOOR(YEARFRAC([Date1],[Date2],4),1) VAR _Months = FLOOR(MOD(YEARFRAC([Date1],[Date2],4),1) * 12.0,1) VAR _daysinMonth = DAY(EOMONTH([Date1],0)) VAR _days = IF(DAY([Date1])<DAY([Date2]),DAY([Date2])-DAY([Date1]),DAY([Date2])+(_daysinMonth-DAY([Date1]))) VAR _daysFinal = SWITCH(TRUE(),DAY(EOMONTH([Date1],0)) = _days || DAY(EOMONTH([Date2],0)) = _days,0,_days) RETURN SWITCH(TRUE(), _Years>0 && _Months = 0 && _daysFinal = 0,_Years & " year(s)", _Years>0 && _Months>0 && _daysFinal = 0, _Years & " year(s), " & _Months & " month(s) ", _Years>0 && _Months >0 && _daysFinal >0, _Years & " year(s), " & _Months & " month(s) " & _daysFinal & " day(s)", _Years>0 && _Months = 0 && _daysFinal >0, _Years & " year(s), " & _daysFinal & " day(s)", _Months>0 && _daysFinal = 0, _Months & " month(s) ", _Months>0 && _daysFinal >0, _Months & " month(s) " & _daysFinal & " day(s)", _daysFinal & " day(s)" )
DataVitalizer
Super User
7 years agoPattemManohar Thank you for your reply.
I am facing a new issue when using the updated fomula, when the exact difference between both dates is one (1) Year the formula returns 30days
Thank you in advance
PattemManohar
Community Champion
7 years agoDataVitalizer Please try this... Hopefully this should handle all cases...
DateDiff =
VAR __daysinMonth = DAY(EOMONTH([Date1],0))
VAR __years = DATEDIFF([Date1],[Date2],YEAR)
VAR __months = IF(MONTH([Date1])<=MONTH([Date2]),MONTH([Date2])-MONTH([Date1]),12-MONTH([Date1])+MONTH([Date2])-1)
VAR __days = IF(DAY([Date1])<DAY([Date2]),DAY([Date2])-DAY([Date1]),DAY([Date2])+(__daysinMonth-DAY([Date1])))
VAR __Final = SWITCH(TRUE(),
__years>0 && __months = 0,__years & " year(s)",
DAY(Test68DateDiffInWords[Date1])=DAY(Test68DateDiffInWords[Date2]),__months & " month(s)",
__years>0 && __months>0 && __days>0,__years & " year(s), " & __months & " month(s) and " & __days & " day(s)",
__months>0,__months & " month(s) and " & __days & " day(s)",
__days & " day(s)"
)
RETURN __Final