# EOMONTH

## What is EOMONTH?

Date manipulations are always associated with pain for the inclined Ninja, as we have already noticed several times during the year. Therefore, there are numerous functions that can help. `EOMONTH` also belongs in this category and calculates the end of the respective month for a given date.

## How can you work with EOMONTH?

Let’s start by calculating the end of the current month. You do that as follows:

`SELECT EOMONTH(GETDATE())`

With that we could end a Lightning ninja here and leave you for this year, but we would rather do a little more research on `EOMONTH` and give some practical examples of its use.

The first of the following month you’ll find out the following month consequently:

`SELECT DATEADD(DAY, 1, EOMONTH(GETDATE()))`

And the first of this month then logically so:

`SELECT DATEADD(DAY, 1, EOMONTH(DATEADD(MONTH, -1, GETDATE())))`

Of course you can also check that it also works in leap years:

`SELECT EOMONTH('2020-02-02')`

You can determine all firsts of the last 12 months as follows:

```SELECT
DATENAME(
WEEKDAY
,DATENAME(
MONTH
FROM (
VALUES
(1)
,(2)
,(3)
,(4)
,(5)
,(6)
,(7)
,(8)
,(9)
,(10)
,(11)
,(12)
) AS t(m)```

You can also shorten this by using the second argument of `EOMONTH`, which specifies how many months you want to move away from the given date:

```SELECT
DATENAME(
WEEKDAY
,DATENAME(
MONTH
FROM (
VALUES
(1)
,(2)
,(3)
,(4)
,(5)
,(6)
,(7)
,(8)
,(9)
,(10)
,(11)
,(12)
) AS t(m)```

That means here you have even included a rudimentary date arithmetic. All in all, `EOMONTH` makes your life much easier, especially when it comes to calculating deadlines. In this sense we wish you a nice

`SELECT EOMONTH(GETDATE())`

A happy New Year on the

`SELECT DATEADD(DAY, 1, EOMONTH(GETDATE()))`

And thanks for following the ninja through 2020.