---
layout: docu
redirect_from:
- /docs/sql/functions/interval
title: Interval Functions
---

<!-- markdownlint-disable MD001 -->

This section describes functions and operators for examining and manipulating [`INTERVAL`]({% link docs/stable/sql/data_types/interval.md %}) values.

## Interval Operators

The table below shows the available mathematical operators for `INTERVAL` types.

| Operator | Description | Example | Result |
|:-|:--|:----|:--|
| `+` | Addition of an `INTERVAL` | `INTERVAL 1 HOUR + INTERVAL 5 HOUR` | `INTERVAL 6 HOUR` |
| `+` | Addition to a `DATE` | `DATE '1992-03-22' + INTERVAL 5 DAY` | `1992-03-27` |
| `+` | Addition to a `TIMESTAMP` | `TIMESTAMP '1992-03-22 01:02:03' + INTERVAL 5 DAY` | `1992-03-27 01:02:03` |
| `+` | Addition to a `TIME` | `TIME '01:02:03' + INTERVAL 5 HOUR` | `06:02:03` |
| `-` | Subtraction of an `INTERVAL` | `INTERVAL 5 HOUR - INTERVAL 1 HOUR` | `INTERVAL 4 HOUR` |
| `-` | Subtraction from a `DATE` | `DATE '1992-03-27' - INTERVAL 5 DAY` | `1992-03-22` |
| `-` | Subtraction from a `TIMESTAMP` | `TIMESTAMP '1992-03-27 01:02:03' - INTERVAL 5 DAY` | `1992-03-22 01:02:03` |
| `-` | Subtraction from a `TIME` | `TIME '06:02:03' - INTERVAL 5 HOUR` | `01:02:03` |

## Interval Functions

The table below shows the available scalar functions for `INTERVAL` types.

| Name | Description |
|:--|:-------|
| [`date_part(part, interval)`](#date_partpart-interval) | Extract [datepart component]({% link docs/stable/sql/functions/datepart.md %}) (equivalent to `extract`). See [`INTERVAL`]({% link docs/stable/sql/data_types/interval.md %}) for the sometimes surprising rules governing this extraction. |
| [`datepart(part, interval)`](#datepartpart-interval) | Alias of `date_part`. |
| [`extract(part FROM interval)`](#extractpart-from-interval) | Alias of `date_part`. |
| [`epoch(interval)`](#epochinterval) | Get total number of seconds, as double precision floating point number, in interval. |
| [`to_centuries(integer)`](#to_centuriesinteger) | Construct a century interval. |
| [`to_days(integer)`](#to_daysinteger) | Construct a day interval. |
| [`to_decades(integer)`](#to_decadesinteger) | Construct a decade interval. |
| [`to_hours(integer)`](#to_hoursinteger) | Construct an hour interval. |
| [`to_microseconds(integer)`](#to_microsecondsinteger) | Construct a microsecond interval. |
| [`to_millennia(integer)`](#to_millenniainteger) | Construct a millennium interval. |
| [`to_milliseconds(integer)`](#to_millisecondsinteger) | Construct a millisecond interval. |
| [`to_minutes(integer)`](#to_minutesinteger) | Construct a minute interval. |
| [`to_months(integer)`](#to_monthsinteger) | Construct a month interval. |
| [`to_seconds(integer)`](#to_secondsinteger) | Construct a second interval. |
| [`to_weeks(integer)`](#to_weeksinteger) | Construct a week interval. |
| [`to_years(integer)`](#to_yearsinteger) | Construct a year interval. |

> Only the documented [date part components]({% link docs/stable/sql/functions/datepart.md %}) are defined for intervals.

#### `date_part(part, interval)`

<div class="nostroke_table"></div>

| **Description** | Extract [datepart component]({% link docs/stable/sql/functions/datepart.md %}) (equivalent to `extract`). See [`INTERVAL`]({% link docs/stable/sql/data_types/interval.md %}) for the sometimes surprising rules governing this extraction. |
| **Example** | `date_part('year', INTERVAL '14 months')` |
| **Result** | `1` |

#### `datepart(part, interval)`

<div class="nostroke_table"></div>

| **Description** | Alias of `date_part`. |
| **Example** | `datepart('year', INTERVAL '14 months')` |
| **Result** | `1` |

#### `extract(part FROM interval)`

<div class="nostroke_table"></div>

| **Description** | Alias of `date_part`. |
| **Example** | `extract('month' FROM INTERVAL '14 months')` |
| **Result** | 2 |

#### `epoch(interval)`

<div class="nostroke_table"></div>

| **Description** | Get total number of seconds, as double precision floating point number, in interval. |
| **Example** | `epoch(INTERVAL 5 HOUR)` |
| **Result** | `18000.0` |

#### `to_centuries(integer)`

<div class="nostroke_table"></div>

| **Description** | Construct a century interval. |
| **Example** | `to_centuries(5)` |
| **Result** | `INTERVAL 500 YEAR` |

#### `to_days(integer)`

<div class="nostroke_table"></div>

| **Description** | Construct a day interval. |
| **Example** | `to_days(5)` |
| **Result** | `INTERVAL 5 DAY` |

#### `to_decades(integer)`

<div class="nostroke_table"></div>

| **Description** | Construct a decade interval. |
| **Example** | `to_decades(5)` |
| **Result** | `INTERVAL 50 YEAR` |

#### `to_hours(integer)`

<div class="nostroke_table"></div>

| **Description** | Construct an hour interval. |
| **Example** | `to_hours(5)` |
| **Result** | `INTERVAL 5 HOUR` |

#### `to_microseconds(integer)`

<div class="nostroke_table"></div>

| **Description** | Construct a microsecond interval. |
| **Example** | `to_microseconds(5)` |
| **Result** | `INTERVAL 5 MICROSECOND` |

#### `to_millennia(integer)`

<div class="nostroke_table"></div>

| **Description** | Construct a millennium interval. |
| **Example** | `to_millennia(5)` |
| **Result** | `INTERVAL 5000 YEAR` |

#### `to_milliseconds(integer)`

<div class="nostroke_table"></div>

| **Description** | Construct a millisecond interval. |
| **Example** | `to_milliseconds(5)` |
| **Result** | `INTERVAL 5 MILLISECOND` |

#### `to_minutes(integer)`

<div class="nostroke_table"></div>

| **Description** | Construct a minute interval. |
| **Example** | `to_minutes(5)` |
| **Result** | `INTERVAL 5 MINUTE` |

#### `to_months(integer)`

<div class="nostroke_table"></div>

| **Description** | Construct a month interval. |
| **Example** | `to_months(5)` |
| **Result** | `INTERVAL 5 MONTH` |

#### `to_seconds(integer)`

<div class="nostroke_table"></div>

| **Description** | Construct a second interval. |
| **Example** | `to_seconds(5)` |
| **Result** | `INTERVAL 5 SECOND` |

#### `to_weeks(integer)`

<div class="nostroke_table"></div>

| **Description** | Construct a week interval. |
| **Example** | `to_weeks(5)` |
| **Result** | `INTERVAL 35 DAY` |

#### `to_years(integer)`

<div class="nostroke_table"></div>

| **Description** | Construct a year interval. |
| **Example** | `to_years(5)` |
| **Result** | `INTERVAL 5 YEAR` |