# Domo Ideas Exchange - Beast Modes - First / Last Days of the Month / Week

Problem:

How Do I calculate the start or end date of the week or month?

Solution:

Last Day of the Month:

This is fairly simple as we can use utilize the `LAST_DAY` function which will return the last day of the month for the provided date.

```LAST_DAY(`dt`)
```

First Day of the Month:

For this we can do some simple math to subtract a specific number of days. We need to get back to day one. The `DAYOFMONTH` function will return the day number of the supplied date. We just need to subtract one less from the date's day number

```-- Author:
-- Created:
-- Description: Subtract the number of days of the date (except one) to get the first of the month
-- 24-(24-1) => day 24 - 23 days = day 1
DATE_SUB(`dt`, INTERVAL (DAYOFMONTH(`dt`) - 1) DAY)

```

Last Day of the Week:

Similar to the first day of the month we can utilize math to add a specific number of days to get to Saturday. There is a function called `DAYOFWEEK` which will return a number between 1 (Sunday) and 7 (Saturday). We simply need to calculate the difference from the given date to Saturday and add that number of days.

```-- Author:
-- Created:
-- Description: Get the last day of the week.
-- This is done by getting the day of the week (1-7) and adding the number
-- of days needed to equal 7 (Saturday)
```

First Day of the Week:

For the First day of the week we do the opposite of the Last Day of the Week and subtract days until we get to day 1 of the week.

```-- Author:
-- Created:
-- Description: Get the first day of the week
-- This is done by subtracting the day number (1-7) from the given date.
-- 5 (Thursday) - (5-1) days => 5 - 4 = 1 (Sunday)
DATE_SUB(`dt`, INTERVAL (DAYOFWEEK(`dt`) - 1) DAY)

```

**Did this solve your problem? Accept it as a solution!**

• @GrantSmith What if you would like to have Monday as the first day of the week?

• Hi @Derreck

You can just add a day to the date:

```DATE_ADD(DATE_SUB(`dt`, INTERVAL (DAYOFWEEK(`dt`) - 1) DAY), INTERVAL 1 DAY)
```

End of the week:

```DATE_ADD(`dt`, INTERVAL (7- DAYOFWEEK(`dt`) + 1) DAY)
```

• ```LAST_DAY(DATE_ADD(`dt`, INTERVAL 1 MONTH))