Spec-Zone.ru › DuckDB

Функции даты

В этом разделе описываются функции и операторы для анализа и обработки значений DATE.

Операторы даты

В таблице ниже показаны доступные математические операторы для типов DATE.

Оператор Описание Пример Результат
+ Сложение дней (целые числа) DATE '1992-03-22' + 5 1992-03-27
+ Сложение INTERVAL DATE '1992-03-22' + INTERVAL 5 DAY 1992-03-27
+ Сложение переменной INTERVAL SELECT DATE '1992-03-22' + INTERVAL (d.days) DAY FROM (VALUES (5), (11)) AS d(days) 1992-03-27 и 1992-04-02
- Вычитание DATE DATE '1992-03-27' - DATE '1992-03-22' 5
- Вычитание INTERVAL DATE '1992-03-27' - INTERVAL 5 DAY 1992-03-22
- Вычитание переменной INTERVAL SELECT DATE '1992-03-27' - INTERVAL (d.days) DAY FROM (VALUES (5), (11)) AS d(days) 1992-03-22 и 1992-03-16

Добавление к бесконечным значениям или вычитание из них приводит к тому же бесконечному значению.

Функции даты

В таблице ниже показаны доступные функции для типов DATE. Даты также можно обрабатывать с помощью функций времени через повышение типа.

Имя Описание
current_date Текущая дата (в начале текущей транзакции).
date_add(date, interval) Добавить интервал к дате.
date_diff(part, startdate, enddate) Количество границ разбиения между датами.
date_part(part, date) Получить подполе (эквивалентно extract).
date_sub(part, startdate, enddate) Количество полных разбиений между датами.
date_trunc(part, date) Округлить до указанной точности.
datediff(part, startdate, enddate) Количество границ разбиения между датами. Псевдоним date_diff.
datepart(part, date) Получить подполе (эквивалентно extract). Псевдоним date_part.
datesub(part, startdate, enddate) Количество полных разбиений между датами. Псевдоним date_sub.
datetrunc(part, date) Округлить до указанной точности. Псевдоним date_trunc.
dayname(date) Название дня недели (на английском языке).
extract(part from date) Получить подполе из даты.
greatest(date, date) Позднейшая из двух дат.
isfinite(date) Возвращает true, если дата конечна, иначе false.
isinf(date) Возвращает true, если дата бесконечна, иначе false.
last_day(date) Последний день соответствующего месяца в дате.
least(date, date) Более ранняя из двух дат.
make_date(year, month, day) Дата для заданных частей.
monthname(date) Название месяца (на английском языке).
strftime(date, format) Преобразование даты в строку в соответствии со строкой формата.
time_bucket(bucket_width, date[, offset]) Округлить date по указанному интервалу bucket_width. Ведерки смещены на интервал offset.
time_bucket(bucket_width, date[, origin]) Округлить date по указанному интервалу bucket_width. Ведерки выровнены относительно origin даты. origin по умолчанию составляет 2000-01-03 для ведерков, не включающих интервал месяца или года, и 2000-01-01 для ведерков месяцев и лет.
today() Текущая дата (начало текущей транзакции).

current_date

Описание Текущая дата (в начале текущей транзакции).
Пример current_date
Результат 2022-10-08

date_add(date, interval)

Описание Добавить интервал к дате.
Пример date_add(DATE '1992-09-15', INTERVAL 2 MONTH)
Результат 1992-11-15

date_diff(part, startdate, enddate)

Описание Количество границ разбиения между датами.
Пример date_diff('month', DATE '1992-09-15', DATE '1992-11-14')
Результат 2

date_part(part, date)

Описание Получить подполе (эквивалентно extract).
Пример date_part('year', DATE '1992-09-20')
Результат 1992

date_sub(part, startdate, enddate)

Описание Количество полных разбиений между датами.
Пример date_sub('month', DATE '1992-09-15', DATE '1992-11-14')
Результат 1

date_trunc(part, date)

Описание Округлить до указанной точности.
Пример date_trunc('month', DATE '1992-03-07')
Результат 1992-03-01

datediff(part, startdate, enddate)

Описание Количество границ разбиения между датами.
Пример datediff('month', DATE '1992-09-15', DATE '1992-11-14')
Результат 2
Псевдоним date_diff.

datepart(part, date)

Описание Получить подполе (эквивалентно extract).
Пример datepart('year', DATE '1992-09-20')
Результат 1992
Псевдоним date_part.

datesub(part, startdate, enddate)

Описание Количество полных разделов между датами.
Пример datesub('month', DATE '1992-09-15', DATE '1992-11-14')
Результат 1
Псевдоним date_sub.

datetrunc(part, date)

Описание Округлить до заданной точности.
Пример datetrunc('month', DATE '1992-03-07')
Результат 1992-03-01
Псевдоним date_trunc.

dayname(date)

Описание Название дня недели (на английском языке).
Пример dayname(DATE '1992-09-20')
Результат Sunday

extract(part from date)

Описание Получить подполе из даты.
Пример extract('year' FROM DATE '1992-09-20')
Результат 1992

greatest(date, date)

Описание Поздняя из двух дат.
Пример greatest(DATE '1992-09-20', DATE '1992-03-07')
Результат 1992-09-20

isfinite(date)

Описание Возвращает true, если дата конечная, иначе false.
Пример isfinite(DATE '1992-03-07')
Результат true

isinf(date)

Описание Возвращает true, если дата бесконечна, иначе false.
Пример isinf(DATE '-infinity')
Результат true

last_day(date)

Описание Последний день соответствующего месяца в дате.
Пример last_day(DATE '1992-09-20')
Результат 1992-09-30

least(date, date)

Описание Более ранняя из двух дат.
Пример least(DATE '1992-09-20', DATE '1992-03-07')
Результат 1992-03-07

make_date(year, month, day)

Описание Дата для заданных частей.
Пример make_date(1992, 9, 20)
Результат 1992-09-20

monthname(date)

Описание Название месяца (на английском языке).
Пример monthname(DATE '1992-09-20')
Результат September

strftime(date, format)

Описание Преобразует дату в строку в соответствии с форматом строки.
Пример strftime(date '1992-01-01', '%a, %-d %B %Y')
Результат Wed, 1 January 1992

time_bucket(bucket_width, date[, offset])

Описание Округляет date по указанному интервалу bucket_width. Ведерки смещены на offset интервал.
Пример time_bucket(INTERVAL '2 months', DATE '1992-04-20', INTERVAL '1 month')
Результат 1992-04-01

time_bucket(bucket_width, date[, origin])
Описание Округляет date по указанному интервалу bucket_width. Ведерки выровнены относительно origin даты. origin по умолчанию устанавливается в 2000-01-03 для ведерок, которые не включают интервал месяца или года, и в 2000-01-01 для ведерок месяца и года.
Пример time_bucket(INTERVAL '2 weeks', DATE '1992-04-20', DATE '1992-04-01')
Результат 1992-04-15

today()

Описание Текущая дата (начало текущей транзакции).
Пример today()
Результат 2022-10-08

Функции извлечения частей даты

Также существуют специализированные функции для получения подполей. Некоторые примеры включают извлечение дня из даты или дня недели из даты.

Функции, применяемые к бесконечным датам, будут возвращать те же бесконечные даты (например, greatest) или NULL (например, date_part) в зависимости от того, что «имеет смысл». В общем случае, если функция должна исследовать части бесконечной даты, результат будет NULL.

© Copyright 2018–2024 Stichting DuckDB Foundation
Licensed under the MIT License.
https://duckdb.org/docs/sql/functions/date.html

END_OF_DOCUMENT_MARKER

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API