SQL
Date Functions
The table below shows the available functions for `DATE` types.
Dates can also be manipulated with the [timestamp functions](#docs:sql:functions:timestamp) through type promotion.  
| Name | Description |
|:--|:-------|
| [`current_date`](#::current_date) | Current date (at start of current transaction). |
| [`date_add(date, interval)`](#::date_adddate-interval) | Add the interval to the date. |
| [`date_diff(part, startdate, enddate)`](#::date_diffpart-startdate-enddate) | The number of [partition](#docs:sql:functions:datepart) boundaries between the dates. |
| [`date_part(part, date)`](#::date_partpart-date) | Get the [subfield](#docs:sql:functions:datepart) (equivalent to `extract`). |
| [`date_sub(part, startdate, enddate)`](#::date_subpart-startdate-enddate) | The number of complete [partitions](#docs:sql:functions:datepart) between the dates. |
| [`date_trunc(part, date)`](#::date_truncpart-date) | Truncate to specified [precision](#docs:sql:functions:datepart). |
| [`datediff(part, startdate, enddate)`](#::datediffpart-startdate-enddate) | The number of [partition](#docs:sql:functions:datepart) boundaries between the dates. Alias of `date_diff`. |
| [`datepart(part, date)`](#::datepartpart-date) | Get the [subfield](#docs:sql:functions:datepart) (equivalent to `extract`). Alias of `date_part`. |
| [`datesub(part, startdate, enddate)`](#::datesubpart-startdate-enddate) | The number of complete [partitions](#docs:sql:functions:datepart) between the dates. Alias of `date_sub`. |
| [`datetrunc(part, date)`](#::datetruncpart-date) | Truncate to specified [precision](#docs:sql:functions:datepart). Alias of `date_trunc`. |
| [`dayname(date)`](#::daynamedate) | The (English) name of the weekday. |
| [`extract(part from date)`](#::extractpart-from-date) | Get [subfield](#docs:sql:functions:datepart) from a date. |
| [`greatest(date, date)`](#::greatestdate-date) | The later of two dates. |
| [`isfinite(date)`](#::isfinitedate) | Returns true if the date is finite, false otherwise. |
| [`isinf(date)`](#::isinfdate) | Returns true if the date is infinite, false otherwise. |
| [`last_day(date)`](#::last_daydate) | The last day of the corresponding month in the date. |
| [`least(date, date)`](#::leastdate-date) | The earlier of two dates. |
| [`make_date(year, month, day)`](#::make_dateyear-month-day) | The date for the given parts. |
| [`monthname(date)`](#::monthnamedate) | The (English) name of the month. |
| [`strftime(date, format)`](#::strftimedate-format) | Converts a date to a string according to the [format string](#docs:sql:functions:dateformat). |
| [`time_bucket(bucket_width, date[, offset])`](#time_bucketbucket_width-date-offset) | Truncate `date` by the specified interval `bucket_width`. Buckets are offset by `offset` interval. |
| [`time_bucket(bucket_width, date[, origin])`](#time_bucketbucket_width-date-origin) | Truncate `date` by the specified interval `bucket_width`. Buckets are aligned relative to `origin` date. `origin` defaults to 2000-01-03 for buckets that don't include a month or year interval, and to 2000-01-01 for month and year buckets. |
| [`today()`](#::today) | Current date (start of current transaction). |