In this tutorial, we will learn about the MySQL `FROM_DAYS()`

and `TO_DAYS()`

functions.

- The MySQL
`FROM_DAYS()`

function returns the date value from a given numeric date value. The specified numeric date value is divided by 365. The resulting remainder is added to the year 0 and accordingly, the date value is returned. I know it is a bit confusing but the examples below will hopefully clear it up for you. - The MySQL
`TO_DAYS()`

function is the exact opposite of the`FROM_DAYS()`

function. It returns the number of days between a date and the year 0 (date “0000-00-00”).

Note that both functions can be used only with dates within the Gregorian calendar. Let us know take a look at the syntaxes and examples of these two functions.

## Syntax of MySQL FROM_DAYS()

`FROM_DAYS(number)`

Code language: SQL (Structured Query Language) (sql)

Where ‘number’ is the numeric date value that is to be converted to a date value.

## Syntax of MySQL TO_DAYS()

`TO_DAYS(date)`

Code language: SQL (Structured Query Language) (sql)

Where ‘date’ is a date value which `TO_DAYS()`

will use to find the number of days between ‘date’ and year 0.

## Examples of MySQL FROM_DAYS()

Let’s take a look at the examples of the MySQL FROM_DAYS() function here.

### The Working of MySQL FROM_DAYS()

Let us take the opportunity of using the below basic examples to understand the working of the `FROM_DAYS()`

function. The year 0 is considered the start point. As you know, every year (apart from a leap year) has 365 days. So let us pass 1 and 365 to find the first and last dates from the year 0. Let us use the `SELECT`

statement for this.

```
SELECT FROM_DAYS(1);
SELECT FROM_DAYS(365);
```

Code language: SQL (Structured Query Language) (sql)

And the output is –

Wait, why did it return ‘0000-00-00’ in both cases? That is because MySQL recognizes the first 365 days as a part of year 0 and only starts counting from day 366. And that is why the specified numeric date value is divided by 365. The resulting remainder is added to the year 0 and accordingly, the date value is returned.

In the case of 366, the resulting remainder is 1, so that gets added to year 0 and the first date after year 0 is 0001-01-01. Similarly, if we pass 367, the remainder is 2 and the date returned is 0001-01-02. We can see this using the below queries –

```
SELECT FROM_DAYS(366);
SELECT FROM_DAYS(367);
```

Code language: SQL (Structured Query Language) (sql)

And the output is –

### Passing Mathematical Functions to MySQL FROM_DAYS()

We can pass mathematical functions like `POW()`

to the MySQL `FROM_DAYS()`

function. How about finding the 1000th date and the 1000000th date since the year 0. We will use the `POW()`

function for this.

`SELECT FROM_DAYS(POW(10, 3)); SELECT FROM_DAYS(POW(100, 3));`

Code language: SQL (Structured Query Language) (sql)

And the output is –

## Examples of MySQL TO_DAYS()

Now let us see some basic examples of the `TO_DAYS()`

function. `TO_DAYS()`

is the exact opposite of the `FROM_DAYS()`

function. So if we pass the date ‘0001-01-01’ to the `TO_DAYS()`

function, what might be the output? Let’s see that using the below example.

`SELECT TO_DAYS('0001-01-01');`

Code language: SQL (Structured Query Language) (sql)

And the output is –

Similarly, we can pass different dates to the `TO_DAYS()`

function. Let’s take a look at the below examples.

```
SELECT TO_DAYS('1999-12-31');
SELECT TO_DAYS('2021-03-05');
```

Code language: SQL (Structured Query Language) (sql)

And the output is –

### MySQL TO_DAYS() With A Date From Year 0

`TO_DAYS()`

returns NULL if we pass it any date value of the year 0. This happens because MySQL starts counting the date values only after the year 0 even though it may count the number of days in the year 0. Let us see an example of this.

`SELECT TO_DAYS('0000-00-00');`

Code language: SQL (Structured Query Language) (sql)

And the output is –

### MySQL TO_DAYS() With CURDATE()

Yes, if you want to find out the number of days elapsed since the beginning of time (literally), you can pass the `CURDATE()`

function to the `TO_DAYS()`

function. Let us demonstrate this using the below query. We will use an alias to make our output readable.

`SELECT CURDATE() AS Today, TO_DAYS(CURDATE());`

Code language: SQL (Structured Query Language) (sql)

And the output is –

## Working With Tables

Consider the below Employee table.

Let us compare the `FROM_DAYS()`

and `TO_DAYS()`

functions and display the Date_Joined column, the number of days between every employee and the year 0 and then convert that value back to the date value using the `FROM_DAYS()`

Function. The query is –

```
SELECT Date_Joined,
TO_DAYS(Date_Joined),
FROM_DAYS(TO_DAYS(Date_Joined)) FROM Employee;
```

Code language: SQL (Structured Query Language) (sql)

And the output is –

## Conclusion

In this tutorial, we learned about MySQL `FROM_DAYS()`

and `TO_DAYS()`

functions. There is a lot more we can do with these functions and I encourage you to explore that and practice these queries.

## References

- MySQL Official Documentation on the
`FROM_DAYS()`

and`TO_DAYS()`

function.