Date Functions
Version 0.3.0

This section describes functions and operators for examining and manipulating date values.

## Date Operators

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

Operator Description Example Result
`+` addition of days (integers) `DATE '1992-03-22' + 5` 1992-03-27
`+` addition of an `INTERVAL` `DATE '1992-03-22' + INTERVAL 5 DAY` 1992-03-27
`-` subtraction of `DATE`s `DATE '1992-03-27' - DATE '1992-03-22'` 5
`-` subtraction of an `INTERVAL` `DATE '1992-03-27' - INTERVAL 5 DAY'` 1992-03-22

## Date Functions

The table below shows the available functions for `DATE` types. Dates can also be manipulated with the timestamp functions through type promotion.

Function Description Example Result
`current_date` Current date (at start of current transaction)
`date_diff(``part``, ``startdate``, , ``enddate``)` The number of partition boundaries between the dates `date_diff('month', DATE '1992-09-15', DATE '1992-11-14')` `2`
`date_part(``part``, ``date``)` Get the subfield (equivalent to extract) `date_part('year', DATE '1992-09-20')` `1992`
`date_sub(``part``, ``startdate``, , ``enddate``)` The number of complete partitions between the dates `date_sub('month', DATE '1992-09-15', DATE '1992-11-14')` `1`
`date_trunc(``part``, ``date``)` Truncate to specified precision `date_trunc('month', DATE '1992-03-07')` `1992-03-01`
`dayname(``date``)` The (English) name of the weekday `monthname(DATE '1992-09-20')` `Sunday`
`extract(``part` `from ``date``)` Get subfield from a date `extract('year' FROM DATE '1992-09-20')` `1992`
`greatest(``date``, ``date``)` The later of two dates `greatest(DATE '1992-09-20', DATE '1992-03-07')` `1992-09-20`
`last_day(``date``)` The last day of the month `last_day(DATE '1992-09-20')` `1992-09-30`
`least(``date``, ``date``)` The earlier of two dates `least(DATE '1992-09-20', DATE '1992-03-07')` `1992-03-07`
`monthname(``date``)` The (English) name of the month `monthname(DATE '1992-09-20')` `September`
`weekofyear(``date``)` The week of the year `weekofyear(DATE '1992-09-20')` `38`
`dayofmonth(``date``)` Day of month `dayofmonth(DATE '1992-09-20')` `20`
`last_day(``date``)` Last day of the corresponding month in the date `last_day(DATE '1992-09-20')` `1992-09-30`
`weekday(``date``)` Day of the week (Sunday = 0, Saturday = 6) `weekday(DATE '1992-09-20')` `0`
`isodow(``date``)` ISO day of the week (Monday = 1, Sunday = 7) `isodow(DATE '1992-09-20')` `7`
`yearweek(``date``)` Year and week of year `yearweek(DATE '1992-09-20')` `199238`
`strftime(date, format)` Converts a date to a string according to the format string `strftime(date '1992-01-01', '%a, %-d %B %Y')` `Wed, 1 January 1992`

There are also dedicated extraction functions to get the subfields.

Search Shortcut cmd + k | ctrl + k