> This page location: Date Functions > TO_DATE
> Full Neon documentation index: https://neon.com/docs/llms.txt

# PostgreSQL TO_DATE() Function

**Summary**: in this tutorial, you will learn how to use the PostgreSQL `TO_DATE()` function to convert a string to a date.

## Introduction to the PostgreSQL TO_DATE() function

The `TO_DATE()` function converts a [string](../postgresql-tutorial/postgresql-char-varchar-text) literal to a [date](../postgresql-tutorial/postgresql-date) value.

Here's the basic syntax of the `TO_DATE()` function:

```sql
TO_DATE(text,format);
```

The `TO_DATE()` function accepts two string arguments.

- `text`: is an input string that you want to convert to a date.
- `format`: specifies the format of the input string.

The `TO_DATE()` function returns a `DATE` value.

See the following example:

```sql
SELECT TO_DATE('20170103','YYYYMMDD');
```

Output:

```text
  TO_DATE
------------
 2017-01-03
```

In this example, the string `20170103` is converted into a date based on the input format `YYYYMMDD`.

- `YYYY`: year in four digits format.
- `MM`: month in two digits format.
- `DD`: day in two digits format.

As a result, the function returns `January 3rd 2017`.

The following table illustrates the template patterns for formatting date values:

| **Pattern**             | **Description**                                                                                  |
| ----------------------- | ------------------------------------------------------------------------------------------------ |
| Y,YYY                   | year in 4 digits with comma                                                                      |
| YYYY                    | year in 4 digits                                                                                 |
| YYY                     | last 2 digits of the year                                                                        |
| YY                      | The last digit of the year                                                                       |
| Y                       | The last 3 digits of ISO 8601 week-numbering year                                                |
| IYYY                    | ISO 8601 week-numbering year (4 or more digits)                                                  |
| IYY                     | The last 2 digits of ISO 8601 week-numbering year                                                |
| IY                      | The last digit of ISO 8601 week-numbering year                                                   |
| I                       | Abbreviated capitalized month name e.g., Jan, Feb,  etc.                                         |
| BC, bc, AD or ad        | Era indicator without periods                                                                    |
| B.C., b.c., A.D. ora.d. | Era indicator with periods                                                                       |
| MONTH                   | English month name in uppercase                                                                  |
| Month                   | Full capitalized English month name                                                              |
| month                   | Full lowercase English month name                                                                |
| MON                     | Abbreviated uppercase month name e.g., JAN, FEB, etc.                                            |
| Mon                     | Week number of the year (1-53) (the first week starts on the first day of the year)              |
| mon                     | Abbreviated lowercase month name e.g., Jan, Feb, etc.                                            |
| MM                      | month number from 01 to 12                                                                       |
| DAY                     | Full uppercase day name                                                                          |
| Day                     | Full capitalized day name                                                                        |
| day                     | Full lowercase day name                                                                          |
| DY                      | Abbreviated uppercase day name                                                                   |
| Dy                      | Abbreviated capitalized day name                                                                 |
| dy                      | Abbreviated lowercase day name                                                                   |
| DDD                     | Day of year (001-366)                                                                            |
| IDDD                    | Day of ISO 8601 week-numbering year (001-371; day 1 of the year is Monday of the first ISO week) |
| DD                      | Day of month (01-31)                                                                             |
| D                       | Day of the week, Sunday (1) to Saturday (7)                                                      |
| ID                      | ISO 8601 day of the week, Monday (1) to Sunday (7)                                               |
| W                       | Week of month (1-5) (the first week starts on the first day of the month)                        |
| WW                      | Century e.g., 21, 22, etc.                                                                       |
| IW                      | Week number of ISO 8601 week-numbering year (01-53; the first Thursday of the year is in week 1) |
| CC                      | Century e.g, 21, 22, etc.                                                                        |
| J                       | Julian Day (integer days since November 24, 4714 BC at midnight UTC)                             |
| RM                      | Month in uppercase Roman numerals (I-XII; I=January)                                             |
| rm                      | Month in lowercase Roman numerals (i-xii; i=January)                                             |

## PostgreSQL TO_DATE function examples

The following statement converts the string `10 Feb 2017` into a date value:

```sql
SELECT TO_DATE('10 Feb 2017', 'DD Mon YYYY');
```

The output is:

```text
  TO_DATE
------------
 2017-02-10
(1 row)
```

Suppose you want to convert the string `2017 Feb 10` to a date value, you can apply the pattern `YYYY Mon DD` as follows:

```sql
SELECT TO_DATE('2017 Feb 20','YYYY Mon DD');
```

The function returns the following output:

```text
  TO_DATE
------------
 2017-02-20
(1 row)
```

## PostgreSQL TO_DATE() function gotchas

If you pass an invalid date string, the `TO_DATE()` function will try to convert it to a valid date and issue an error if it cannot. For example:

```sql
SELECT TO_DATE('2017/02/30', 'YYYY/MM/DD');
```

PostgreSQL issued the following error:

```
ERROR:  date/time field value out of range: "2017/02/30"
LINE 1: SELECT '2017/02/30'::date;
```

## Summary

- Use the PostgreSQL `TO_DATE()` function to convert a string literal to a date value.

---

## Related docs (Date Functions)

- [AGE](https://neon.com/postgresql/postgresql-date-functions/postgresql-age)
- [AT TIME ZONE Operator](https://neon.com/postgresql/postgresql-date-functions/postgresql-at-time-zone)
- [CLOCK_TIMESTAMP](https://neon.com/postgresql/postgresql-date-functions/postgresql-clock_timestamp)
- [CURRENT_DATE](https://neon.com/postgresql/postgresql-date-functions/postgresql-current_date)
- [CURRENT_TIME](https://neon.com/postgresql/postgresql-date-functions/postgresql-current_time)
- [CURRENT_TIMESTAMP](https://neon.com/postgresql/postgresql-date-functions/postgresql-current_timestamp)
- [DATE_PART](https://neon.com/postgresql/postgresql-date-functions/postgresql-date_part)
- [DATE_TRUNC](https://neon.com/postgresql/postgresql-date-functions/postgresql-date_trunc)
- [EXTRACT](https://neon.com/postgresql/postgresql-date-functions/postgresql-extract)
- [ISFINITE](https://neon.com/postgresql/postgresql-date-functions/postgresql-isfinite)
- [JUSTIFY_DAYS](https://neon.com/postgresql/postgresql-date-functions/postgresql-justify_days)
- [JUSTIFY_HOURS](https://neon.com/postgresql/postgresql-date-functions/postgresql-justify_hours)
- [JUSTIFY_INTERVAL](https://neon.com/postgresql/postgresql-date-functions/postgresql-justify_interval)
- [LOCALTIME](https://neon.com/postgresql/postgresql-date-functions/postgresql-localtime)
- [LOCALTIMESTAMP](https://neon.com/postgresql/postgresql-date-functions/postgresql-localtimestamp)
- [MAKE_DATE](https://neon.com/postgresql/postgresql-date-functions/postgresql-make_date)
- [MAKE_INTERVAL](https://neon.com/postgresql/postgresql-date-functions/postgresql-make_interval)
- [MAKE_TIME](https://neon.com/postgresql/postgresql-date-functions/postgresql-make_time)
- [NOW](https://neon.com/postgresql/postgresql-date-functions/postgresql-now)
- [PG_SLEEP](https://neon.com/postgresql/postgresql-date-functions/postgresql-pg_sleep)
- [STATEMENT_TIMESTAMP](https://neon.com/postgresql/postgresql-date-functions/postgresql-statement_timestamp)
- [TIMEOFDAY](https://neon.com/postgresql/postgresql-date-functions/postgresql-timeofday)
- [TO_TIMESTAMP](https://neon.com/postgresql/postgresql-date-functions/postgresql-to_timestamp)
