Skip to main content
Documents
Basic SyntaxMath FunctionsDate FunctionsJSON FunctionsDatabasesTables & Schema ManagementString FunctionsTriggersIndexes

PostgreSQL INTERVAL

PostgreSQL's `INTERVAL` is a date function used to represent and manipulate a span of time, such as days, months, or years. It allows for the addition or subtraction of specific time intervals from `TIMESTAMP` or `DATE` data types.

Usage

The `INTERVAL` function is used when you need to perform date and time arithmetic, such as adding or subtracting time periods from a date. It is particularly useful for handling tasks that involve recurring events or scheduling.

SELECT date_column ± INTERVAL 'quantity unit';

In this syntax, `INTERVAL 'quantity unit'` specifies the time interval to add or subtract from `date_column`.

Examples

1. Adding Days to a Date

SELECT CURRENT_DATE + INTERVAL '5 days';

This example adds five days to the current date, returning a new date five days in the future.

2. Subtracting Months from a Date

SELECT CURRENT_DATE - INTERVAL '2 months';

Here, two months are subtracted from the current date, providing a date two months prior.

3. Complex Interval Manipulation

SELECT NOW() + INTERVAL '1 year 2 months 3 days';

This example adds a complex interval of one year, two months, and three days to the current timestamp, demonstrating the flexibility of the `INTERVAL` function.

Additional Usage with Interval Precision

PostgreSQL allows for interval precision, which can specify intervals more accurately, such as `INTERVAL YEAR TO MONTH` or `INTERVAL DAY TO SECOND`. This is useful for complex specifications.

SELECT INTERVAL '1-2' YEAR TO MONTH; -- 1 year and 2 months

Interval Normalization Functions

For normalization of intervals, PostgreSQL provides functions like `JUSTIFY_DAYS()`, `JUSTIFY_HOURS()`, and `JUSTIFY_INTERVAL()` to adjust intervals to more conventional forms.

SELECT JUSTIFY_INTERVAL(INTERVAL '30 days'); -- Converts to '1 month'

Handling Different Units

Intervals may behave differently depending on the units used. For example, adding a month to a date in January results in a date in February, which may have fewer days.

Tips and Best Practices

  • Use consistent units. Be explicit with units (e.g., days, months) to ensure clarity and avoid misunderstandings.
  • Validate date arithmetic. Always test interval calculations to confirm they produce expected results, particularly with varying month lengths and leap years.
  • Combine with `AGE()`. Use `INTERVAL` with the `AGE()` function to calculate the difference between two dates for more comprehensive date handling.
  • Leverage for scheduling. Utilize `INTERVAL` in scheduling applications to easily handle recurring events and appointments.
  • Avoid common pitfalls. Be aware of potential issues like negative intervals or interval overflow, and ensure the logic correctly handles these scenarios.