Forum Discussion

DataVitalizer's avatar
DataVitalizer
Super User
7 years ago
Solved

Calculating 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...
  • PattemManohar's avatar
    PattemManohar
    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)"
                 )