Skip to main content

Hi,

I’m trying to make a formula that gives me the last day of the current month. So, while we’re in March I want it to return 31 or 2018-03-31 and when we get to April return 30 or 2018-04-30.

It seems pretty simple in JS (https://stackoverflow.com/questions/1184334/get-number-days-in-a-specified-month-using-javascript) - but don’t know how to do it on Airtable.


Any ideas?

Thanks a lot!


Best

Sune

Try this formula:


DATETIME_DIFF(DATETIME_PARSE("1-"&CONCATENATE(MONTH(TODAY())+1)&"-"&YEAR(TODAY()),"D-M-YYYY"), DATETIME_PARSE("1-"&MONTH(TODAY())&"-"&YEAR(TODAY()),"D-M-YYYY"),"d")

You can explore it here: https://airtable.com/shrXEpPCnjcgCm76n



  • You could pass a Date instead of using TODAY()

  • I had to use CONCATENATE() to convert the Next Month to a string


Try this formula:


DATETIME_DIFF(DATETIME_PARSE("1-"&CONCATENATE(MONTH(TODAY())+1)&"-"&YEAR(TODAY()),"D-M-YYYY"), DATETIME_PARSE("1-"&MONTH(TODAY())&"-"&YEAR(TODAY()),"D-M-YYYY"),"d")

You can explore it here: https://airtable.com/shrXEpPCnjcgCm76n



  • You could pass a Date instead of using TODAY()

  • I had to use CONCATENATE() to convert the Next Month to a string


Works perfectly - thanks a lot Elias!


Couldn’t you just have a 12 row table and look it up?


Much after the topic, but for those who come here looking for an answer this is simple and would work too:

DAY(DATEADD(DATEADD(DATETIME_FORMAT(TODAY(),‘YYYY-MM’),1,‘month’),-1,‘days’))


Try this formula:


DATETIME_DIFF(DATETIME_PARSE("1-"&CONCATENATE(MONTH(TODAY())+1)&"-"&YEAR(TODAY()),"D-M-YYYY"), DATETIME_PARSE("1-"&MONTH(TODAY())&"-"&YEAR(TODAY()),"D-M-YYYY"),"d")

You can explore it here: https://airtable.com/shrXEpPCnjcgCm76n



  • You could pass a Date instead of using TODAY()

  • I had to use CONCATENATE() to convert the Next Month to a string


Hi @Elias_Gomez_Sainz, thanks for your formula! Does the formula work with dates in the month of December? I can get it to work with all other months except when I pass it a Dec date. Curious if others are seeing it work with Dec dates. Thanks


Workshop_Team’s formula works well, but you have to convert the curly quotes to straight quotes:


DAY(
DATEADD(
DATEADD(
DATETIME_FORMAT(YEAR({date}) & "-" & MONTH({date}) ,"YYYY-MM"),
1,
"months"
),
-1,
"days"
)
)

Or you could try this formula:


SWITCH(MONTH({date}), 
1, 31,
2, IF(MOD(YEAR({date}), 400) = 0,
29,
IF(MOD(YEAR({date}), 100) = 0,
28,
IF(MOD(YEAR({date}), 4) = 0,
29,
28
)
)
),
3, 31,
4, 30,
5, 31,
6, 30,
7, 31,
8, 31,
9, 30,
10, 31,
11, 30,
12, 31
)


Workshop_Team’s formula works well, but you have to convert the curly quotes to straight quotes:


DAY(
DATEADD(
DATEADD(
DATETIME_FORMAT(YEAR({date}) & "-" & MONTH({date}) ,"YYYY-MM"),
1,
"months"
),
-1,
"days"
)
)

Or you could try this formula:


SWITCH(MONTH({date}), 
1, 31,
2, IF(MOD(YEAR({date}), 400) = 0,
29,
IF(MOD(YEAR({date}), 100) = 0,
28,
IF(MOD(YEAR({date}), 4) = 0,
29,
28
)
)
),
3, 31,
4, 30,
5, 31,
6, 30,
7, 31,
8, 31,
9, 30,
10, 31,
11, 30,
12, 31
)


Nice work @kuovonne. Thanks!


Workshop_Team’s formula works well, but you have to convert the curly quotes to straight quotes:


DAY(
DATEADD(
DATEADD(
DATETIME_FORMAT(YEAR({date}) & "-" & MONTH({date}) ,"YYYY-MM"),
1,
"months"
),
-1,
"days"
)
)

Or you could try this formula:


SWITCH(MONTH({date}), 
1, 31,
2, IF(MOD(YEAR({date}), 400) = 0,
29,
IF(MOD(YEAR({date}), 100) = 0,
28,
IF(MOD(YEAR({date}), 4) = 0,
29,
28
)
)
),
3, 31,
4, 30,
5, 31,
6, 30,
7, 31,
8, 31,
9, 30,
10, 31,
11, 30,
12, 31
)


Thank you @kuovonne - the switch function version works in December, each leap year, and is clear and easy to read and understand. 🙂 😀


Reply