month() function returns an integer (number) between
11 that corresponds to the month of its date argument.
month() (and its sibling functions minute, hour, day, date, and year) is useful for manipulating dates within Notion formulas.
month(now()) // Output: 5 (when now() = June 24, 2022) // Assume a property called Date with a current date of Jan 1, 2022 month(prop("Date")) // Output: 0
month() can be used with other functions such as dateSubtract to change the value of a date, like so:
// Assume the value of now() is June 24, 2022 dateSubtract(now(), month(now()), "months") // Output: January 24, 2022
You can take this concept even further to “hard-code” any date into a Notion formula. See the section on Hard-Coding Dates into Formulas within the now article for more on how to do this.
The example database below determines each person’s next birthday based on their Birth Date, as well as the current date.
View and Duplicate Database
“Next Birthday” Property Formula
// Compressed dateAdd(prop("Birth Date"), year(now()) - year(prop("Birth Date")) + if(month(prop("Birth Date")) == month(now()) and date(prop("Birth Date")) >= date(now()) or month(prop("Birth Date")) > month(now()), 0, 1), "years") // Expanded dateAdd( prop("Birth Date"), year( now() ) - year( prop("Birth Date") ) + if( month( prop("Birth Date") ) == month( now() ) and date( prop("Birth Date") ) >= date( now() ) or month( prop("Birth Date") ) > month( now() ), 0, 1 ), "years" )
Here’s the logic behind this formula:
- Start with the birth year.
- Add a number of years to it using dateAdd, determined by the year output of now minus the birth year itself (E.g. 2022 – 1991 = 31).
- Determine if the person’s birthday has already happened this year. If not, add one more year (since we’re determining their next birthday).
To check whether or not the person’s birthday has already happened, we use an if statement and multiple comparisons using comparison operators. If one of the following is true:
- The current month and the birth month are equal AND the current day of the month (determined with date) is equal to or later than the birth date’s day of the month
- OR the birth month is later than the current month
…then this indicates that the person’s birthday has NOT yet happened this year. Therefore, we add 0 to the count.
Otherwise, we add 1 to the count.
Good to know: The or operator has a lower operator precedence than the and operator, meaning that any “and” comparisons will be executed before the first “or” comparison.