Spec-Zone.ru › DuckDB

Функции Timestamp

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

Операторы Timestamp

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

Оператор Описание Пример Результат
+ сложение INTERVAL TIMESTAMP '1992-03-22 01:02:03' + INTERVAL 5 DAY 1992-03-27 01:02:03
- вычитание TIMESTAMP TIMESTAMP '1992-03-27' - TIMESTAMP '1992-03-22' 5 days
- вычитание INTERVAL TIMESTAMP '1992-03-27 01:02:03' - INTERVAL 5 DAY 1992-03-22 01:02:03

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

Скалярные функции Timestamp

В таблице ниже показаны доступные скалярные функции для значений TIMESTAMP.

Имя Описание
age(timestamp, timestamp) Вычитание аргументов, в результате получается разница во времени между двумя отметками времени.
age(timestamp) Вычитание из текущей даты.
century(timestamp) Извлекает столетие отметки времени.
current_timestamp Возвращает текущую отметку времени (в начале транзакции).
date_diff(part, startdate, enddate) Количество границ разбиения разбиения между отметками времени.
date_part([part, ...], timestamp) Получить указанные подполя в виде struct. Список должен быть постоянным.
date_part(part, timestamp) Получить подполе (эквивалентно extract).
date_sub(part, startdate, enddate) Количество полных разбиений между отметками времени.
date_trunc(part, timestamp) Округлить до указанной точности.
datediff(part, startdate, enddate) Псевдоним для date_diff. Количество границ разбиения разбиения между отметками времени.
datepart([part, ...], timestamp) Псевдоним для date_part. Получить указанные подполя в виде struct. Список должен быть постоянным.
datepart(part, timestamp) Псевдоним для date_part. Получить подполе (эквивалентно extract).
datesub(part, startdate, enddate) Псевдоним для date_sub. Количество полных разбиений между отметками времени.
datetrunc(part, timestamp) Псевдоним для date_trunc. Округлить до указанной точности.
dayname(timestamp) Название дня недели (на английском языке).
epoch_ms(ms) Преобразует мс с эпохи в отметку времени.
epoch_ms(timestamp) Преобразует отметку времени в миллисекунды с эпохи.
epoch_ms(timestamp) Возвращает общее количество миллисекунд с эпохи.
epoch_ns(timestamp) Возвращает общее количество наносекунд с эпохи.
epoch_us(timestamp) Возвращает общее количество микросекунд с эпохи.
epoch(timestamp) Преобразует отметку времени в секунды с эпохи.
extract(field FROM timestamp) Получить подполе из отметки времени.
greatest(timestamp, timestamp) Более поздняя из двух отметок времени.
isfinite(timestamp) Возвращает true, если отметка времени конечная, иначе false.
isinf(timestamp) Возвращает true, если отметка времени бесконечная, иначе false.
last_day(timestamp) Последний день месяца.
least(timestamp, timestamp) Более ранняя из двух отметок времени.
make_timestamp(bigint, bigint, bigint, bigint, bigint, double) Отметка времени для заданных частей.
make_timestamp(microseconds) Отметка времени для заданного количества мкс с эпохи.
monthname(timestamp) Название месяца (на английском языке).
strftime(timestamp, format) Преобразует отметку времени в строку в соответствии с форматом строки.
strptime(text, format-list) Преобразует строку text в отметку времени, применяя строки формата в списке до тех пор, пока одна не выполнится успешно. Выбрасывает ошибку при неудаче. Чтобы вернуть NULL при ошибке, используйте try_strptime.
strptime(text, format) Преобразует строку text в отметку времени в соответствии с строкой формата. Выбрасывает ошибку при неудаче. Чтобы вернуть NULL при ошибке, используйте try_strptime.
time_bucket(bucket_width, timestamp[, offset]) Округлить timestamp по указанному интервалу bucket_width. Ведра смещены на offset интервал.
time_bucket(bucket_width, timestamp[, origin]) Округлить timestamp по указанному интервалу bucket_width. Ведра выровнены относительно origin отметки времени. origin по умолчанию 2000-01-03 00:00:00 для ведер, которые не включают интервал месяца или года, и 2000-01-01 00:00:00 для ведер месяца и года.
to_timestamp(double) Преобразует секунды с эпохи в отметку времени с часовым поясом.
try_strptime(text, format-list) Преобразует строку text в отметку времени, применяя строки формата в списке до тех пор, пока одна не выполнится успешно. Возвращает NULL при неудаче.
try_strptime(text, format) Преобразует строку text в отметку времени в соответствии с строкой формата. Возвращает NULL при неудаче.

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

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

age(timestamp, timestamp)

Описание Вычитание аргументов, в результате получается разница во времени между двумя отметками времени.
Пример age(TIMESTAMP '2001-04-10', TIMESTAMP '1992-09-20')
Результат 8 years 6 months 20 days

age(timestamp)

Описание Вычитание из текущей даты.
Пример age(TIMESTAMP '1992-09-20')
Результат 29 years 1 month 27 days 12:39:00.844

century(timestamp)

Описание Извлекает век из отметки времени.
Пример century(TIMESTAMP '1992-03-22')
Результат 20

current_timestamp

Описание Возвращает текущую отметку времени с часовым поясом (в начале транзакции).
Пример current_timestamp
Результат 2024-04-16T09:14:36.098Z

date_diff(part, startdate, enddate)

Описание Количество границ разбиения разбиения между отметками времени.
Пример date_diff('hour', TIMESTAMP '1992-09-30 23:59:59', TIMESTAMP '1992-10-01 01:58:00')
Результат 2

date_part([part, ...], timestamp)

Описание Получить перечисленные подполя в виде struct. Список должен быть постоянным.
Пример date_part(['year', 'month', 'day'], TIMESTAMP '1992-09-20 20:38:40')
Результат {year: 1992, month: 9, day: 20}

date_part(part, timestamp)

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

date_sub(part, startdate, enddate)

Описание Количество полных разделов между отметками времени.
Пример date_sub('hour', TIMESTAMP '1992-09-30 23:59:59', TIMESTAMP '1992-10-01 01:58:00')
Результат 1

date_trunc(part, timestamp)

Описание Округлить до указанной точности.
Пример date_trunc('hour', TIMESTAMP '1992-09-20 20:38:40')
Результат 1992-09-20 20:00:00

datediff(part, startdate, enddate)

Описание Псевдоним date_diff. Количество границ разбиения разбиения между отметками времени.
Пример datediff('hour', TIMESTAMP '1992-09-30 23:59:59', TIMESTAMP '1992-10-01 01:58:00')
Результат 2

datepart([part, ...], timestamp)

Описание Псевдоним date_part. Получить перечисленные подполя в виде struct. Список должен быть постоянным.
Пример datepart(['year', 'month', 'day'], TIMESTAMP '1992-09-20 20:38:40')
Результат {year: 1992, month: 9, day: 20}

datepart(part, timestamp)

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

datesub(part, startdate, enddate)

Описание Псевдоним date_sub. Количество полных разделов между отметками времени.
Пример datesub('hour', TIMESTAMP '1992-09-30 23:59:59', TIMESTAMP '1992-10-01 01:58:00')
Результат 1

datetrunc(part, timestamp)

Описание Псевдоним date_trunc. Округлить до указанной точности.
Пример datetrunc('hour', TIMESTAMP '1992-09-20 20:38:40')
Результат 1992-09-20 20:00:00

dayname(timestamp)

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

epoch_ms(ms)

Описание Преобразует мс с эпохи в отметку времени.
Пример epoch_ms(701222400000)
Результат 1992-03-22 00:00:00

epoch_ms(timestamp)

Описание Преобразует отметку времени в миллисекунды с эпохи.
Пример epoch_ms('2022-11-07 08:43:04.123456'::TIMESTAMP);
Результат 1667810584123

epoch_ms(timestamp)

Описание Возвращает общее количество миллисекунд с эпохи.
Пример epoch_ms(timestamp '2021-08-03 11:59:44.123456')
Результат 1627991984123

epoch_ns(timestamp)

Описание Возвращает общее количество наносекунд с эпохи.
Пример epoch_ns(timestamp '2021-08-03 11:59:44.123456')
Результат 1627991984123456000

epoch_us(timestamp)

Описание Возвращает общее количество микросекунд с эпохи.
Пример epoch_us(timestamp '2021-08-03 11:59:44.123456')
Результат 1627991984123456

epoch(timestamp)

Описание Преобразует отметку времени в секунды с эпохи.
Пример epoch('2022-11-07 08:43:04'::TIMESTAMP);
Результат 1667810584

extract(field FROM timestamp)

Описание Получить подполе из отметки времени.
Пример extract('hour' FROM TIMESTAMP '1992-09-20 20:38:48')
Результат 20

greatest(timestamp, timestamp)

Описание Более поздняя из двух отметок времени.
Пример greatest(TIMESTAMP '1992-09-20 20:38:48', TIMESTAMP '1992-03-22 01:02:03.1234')
Результат 1992-09-20 20:38:48

isfinite(timestamp)

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

isinf(timestamp)

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

last_day(timestamp)

Описание Последний день месяца.
Пример last_day(TIMESTAMP '1992-03-22 01:02:03.1234')
Результат 1992-03-31

least(timestamp, timestamp)

Описание Более ранняя из двух отметок времени.
Пример least(TIMESTAMP '1992-09-20 20:38:48', TIMESTAMP '1992-03-22 01:02:03.1234')
Результат 1992-03-22 01:02:03.1234

make_timestamp(bigint, bigint, bigint, bigint, bigint, double)

Описание Маркер времени для заданных частей.
Пример make_timestamp(1992, 9, 20, 13, 34, 27.123456)
Результат 1992-09-20 13:34:27.123456

make_timestamp(microseconds)

Описание Маркер времени для заданного количества мкс, прошедших с эпохи.
Пример make_timestamp(1667810584123456)
Результат 2022-11-07 08:43:04.123456

monthname(timestamp)

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

strftime(timestamp, format)

Описание Преобразует маркер времени в строку в соответствии со строкой формата.
Пример strftime(timestamp '1992-01-01 20:38:40', '%a, %-d %B %Y - %I:%M:%S %p')
Результат Wed, 1 January 1992 - 08:38:40 PM

strptime(text, format-list)

Описание Преобразует строку text в маркер времени, применяя строки формата в списке до тех пор, пока одна из них не окажется успешной. Бросает ошибку при неудаче. Чтобы вернуть NULL при неудаче, используйте try_strptime.
Пример strptime('4/15/2023 10:56:00', ['%d/%m/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S'])
Результат 2023-04-15 10:56:00

strptime(text, format)

Описание Преобразует строку text в маркер времени в соответствии со строкой формата. Бросает ошибку при неудаче. Чтобы вернуть NULL при неудаче, используйте try_strptime.
Пример strptime('Wed, 1 January 1992 - 08:38:40 PM', '%a, %-d %B %Y - %I:%M:%S %p')
Результат 1992-01-01 20:38:40

time_bucket(bucket_width, timestamp[, offset])

Описание Округляет timestamp до указанного интервала bucket_width. Ведра смещены на offset интервал.
Пример time_bucket(INTERVAL '10 minutes', TIMESTAMP '1992-04-20 15:26:00-07', INTERVAL '5 minutes')
Результат 1992-04-20 15:25:00

time_bucket(bucket_width, timestamp[, origin])

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

to_timestamp(double)

Описание Преобразует секунды с эпохи в маркер времени с часовым поясом.
Пример to_timestamp(1284352323.5)
Результат 2010-09-13 04:32:03.5+00

try_strptime(text, format-list)

Описание Преобразует строку text в маркер времени, применяя строки формата в списке до тех пор, пока одна из них не окажется успешной. Возвращает NULL при неудаче.
Пример try_strptime('4/15/2023 10:56:00', ['%d/%m/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S'])
Результат 2023-04-15 10:56:00

try_strptime(text, format)

Описание Преобразует строку text в маркер времени в соответствии со строкой формата. Возвращает NULL при неудаче.
Пример try_strptime('Wed, 1 January 1992 - 08:38:40 PM', '%a, %-d %B %Y - %I:%M:%S %p')
Результат 1992-01-01 20:38:40

Функции таблиц маркеров времени

В таблице ниже показаны доступные функции таблиц для типов TIMESTAMP.

Имя Описание
generate_series(timestamp, timestamp, interval) Генерирует таблицу маркеров времени в замкнутом диапазоне, делая шаг через интервал.
range(timestamp, timestamp, interval) Генерирует таблицу маркеров времени в полуоткрытом диапазоне, делая шаг через интервал.

Бесконечные значения не допускаются в качестве границ функции таблицы.

generate_series(timestamp, timestamp, interval)

Описание Генерирует таблицу маркеров времени в замкнутом диапазоне, делая шаг через интервал.
Пример generate_series(TIMESTAMP '2001-04-10', TIMESTAMP '2001-04-11', INTERVAL 30 MINUTE)

range(timestamp, timestamp, interval)

Описание Генерирует таблицу маркеров времени в полуоткрытом диапазоне, делая шаг через интервал.
Пример range(TIMESTAMP '2001-04-10', TIMESTAMP '2001-04-11', INTERVAL 30 MINUTE)

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

Spec-Zone.ru

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