The Community will be temporarily unavailable starting on Friday February 28. We’ll be back as soon as we can! To learn more, check out our Announcements blog post.
Dec 30, 2022 01:00 PM
Hello all my first post and i'll probably be embarrassed if answered but, I have a formula in excel that tells me how many total years and then months and then days since someone has been hired and I'm not quite there with Airtable as I am getting how many total years and then total months and then total days.
Solved! Go to Solution.
Dec 31, 2022 06:40 AM
Hi KenM, try this:
IF(
Date != "",
CONCATENATE(
DATETIME_DIFF(TODAY(), Date, 'years'),
""
) &
" years, " &
CONCATENATE(
MONTH(TODAY()) - MONTH(Date),
""
) &
" months, " &
CONCATENATE(
DAY(TODAY()) - DAY(Date),
""
) &
" days"
)
Resulting in this:
Jan 04, 2023 10:45 AM
Thanks again and I have adjusted my brain. I can live with this. I just now view it as a countdown to their anniversary instead of an accrued date since their hire date.
Dec 31, 2022 06:40 AM
Hi KenM, try this:
IF(
Date != "",
CONCATENATE(
DATETIME_DIFF(TODAY(), Date, 'years'),
""
) &
" years, " &
CONCATENATE(
MONTH(TODAY()) - MONTH(Date),
""
) &
" months, " &
CONCATENATE(
DAY(TODAY()) - DAY(Date),
""
) &
" days"
)
Resulting in this:
Dec 31, 2022 07:58 AM
Awesome and thank you. I appreciate this.
Dec 31, 2022 11:26 AM
Hi Adam - nice formula however when I've used Today() to calculate the years between 1/1/2023 and 1/1/2022 it comes out as 0 years instead of 1. If I use Now() it returns the correct value. I think Today() returns GMT and Now() returns your local time?
Jan 01, 2023 04:37 AM
From what I understand, TODAY() returns the date without the time, and it defaults to 12 AM. In addition, I think you might be encountering a timezone issue as dates on Airtable are stored as GMT+0, resulting in behaviour you saw
Jan 02, 2023 01:28 PM
Jan 03, 2023 11:26 AM
Hi Ken - calculating days months and years between dates looks like it should be simple but the more you look the more you realise the complexity of it. I have my doubts that it's possible using an airtable formula field.
Each month has a different number of days so you have to know how many of each month there is. For example 1 Jan 2023 to 1 Feb 2023 is a total of 31 days but equals a month. 1 Feb 2023 to 1 Mar 2023 is only 28 days but also equals a month. So given that a unit "month" can be multiple values you can't just subtract parts of the dates to get the result. As you've seen "2 Jan" - "31 Dec" gives you negative 29 days and negative 11 months. On top of all that every 4 years you have a leap year to consider. Another consideration is do you include the end date and therefore add 1 day on?
I think your best bet is to write a script - have a look at https://github.com/codebox/moment-precise-range
Either that or just use the number of days, ignoring months and years.
Jan 04, 2023 10:45 AM
Thanks again and I have adjusted my brain. I can live with this. I just now view it as a countdown to their anniversary instead of an accrued date since their hire date.
Jan 07, 2023 04:02 AM - edited Jan 07, 2023 05:31 PM
Hi Adam_TheTimeSav and thank you for the new formula as I am way far out of my knowledge zone as a beginner. Thank you for your valuable time. I went ahead and put both formulas side by side in my roster database and will evaluate over a couple weeks as I see the days and months click away. Your new formula is "Practice - Accrued (1)".