Spec-Zone.ru › DuckDB
Функции 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.
Имя Описание 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 '2001-04-10', TIMESTAMP '1992-09-20') Результат 8 years 6 months 20 days
Описание Вычитание из текущей даты. Пример age(TIMESTAMP '1992-09-20') Результат 29 years 1 month 27 days 12:39:00.844
Описание Извлекает век из отметки времени. Пример century(TIMESTAMP '1992-03-22') Результат 20
Описание Возвращает текущую отметку времени с часовым поясом (в начале транзакции). Пример current_timestamp Результат 2024-04-16T09:14:36.098Z
Описание Количество границ разбиения разбиения между отметками времени. Пример date_diff('hour', TIMESTAMP '1992-09-30 23:59:59', TIMESTAMP '1992-10-01 01:58:00') Результат 2
Описание Получить перечисленные подполя в виде struct. Список должен быть постоянным. Пример date_part(['year', 'month', 'day'], TIMESTAMP '1992-09-20 20:38:40') Результат {year: 1992, month: 9, day: 20}
Описание Получить подполе (эквивалентно extract). Пример date_part('minute', TIMESTAMP '1992-09-20 20:38:40') Результат 38
Описание Количество полных разделов между отметками времени. Пример date_sub('hour', TIMESTAMP '1992-09-30 23:59:59', TIMESTAMP '1992-10-01 01:58:00') Результат 1
Описание Округлить до указанной точности . Пример date_trunc('hour', TIMESTAMP '1992-09-20 20:38:40') Результат 1992-09-20 20:00:00
Описание Псевдоним date_diff. Количество границ разбиения разбиения между отметками времени. Пример datediff('hour', TIMESTAMP '1992-09-30 23:59:59', TIMESTAMP '1992-10-01 01:58:00') Результат 2
Описание Псевдоним date_part. Получить перечисленные подполя в виде struct. Список должен быть постоянным. Пример datepart(['year', 'month', 'day'], TIMESTAMP '1992-09-20 20:38:40') Результат {year: 1992, month: 9, day: 20}
Описание Псевдоним date_part. Получить подполе (эквивалентно extract). Пример datepart('minute', TIMESTAMP '1992-09-20 20:38:40') Результат 38
Описание Псевдоним date_sub. Количество полных разделов между отметками времени. Пример datesub('hour', TIMESTAMP '1992-09-30 23:59:59', TIMESTAMP '1992-10-01 01:58:00') Результат 1
Описание Псевдоним date_trunc. Округлить до указанной точности . Пример datetrunc('hour', TIMESTAMP '1992-09-20 20:38:40') Результат 1992-09-20 20:00:00
Описание Название дня недели (на английском языке). Пример dayname(TIMESTAMP '1992-03-22') Результат Sunday
Описание Преобразует мс с эпохи в отметку времени. Пример epoch_ms(701222400000) Результат 1992-03-22 00:00:00
Описание Преобразует отметку времени в миллисекунды с эпохи. Пример epoch_ms('2022-11-07 08:43:04.123456'::TIMESTAMP); Результат 1667810584123
Описание Возвращает общее количество миллисекунд с эпохи. Пример epoch_ms(timestamp '2021-08-03 11:59:44.123456') Результат 1627991984123
Описание Возвращает общее количество наносекунд с эпохи. Пример epoch_ns(timestamp '2021-08-03 11:59:44.123456') Результат 1627991984123456000
Описание Возвращает общее количество микросекунд с эпохи. Пример epoch_us(timestamp '2021-08-03 11:59:44.123456') Результат 1627991984123456
Описание Преобразует отметку времени в секунды с эпохи. Пример epoch('2022-11-07 08:43:04'::TIMESTAMP); Результат 1667810584
Описание Получить подполе из отметки времени. Пример extract('hour' FROM TIMESTAMP '1992-09-20 20:38:48') Результат 20
Описание Более поздняя из двух отметок времени. Пример greatest(TIMESTAMP '1992-09-20 20:38:48', TIMESTAMP '1992-03-22 01:02:03.1234') Результат 1992-09-20 20:38:48
Описание Возвращает true, если отметка времени конечна, иначе false. Пример isfinite(TIMESTAMP '1992-03-07') Результат true
Описание Возвращает true, если отметка времени бесконечна, иначе false. Пример isinf(TIMESTAMP '-infinity') Результат true
Описание Последний день месяца. Пример last_day(TIMESTAMP '1992-03-22 01:02:03.1234') Результат 1992-03-31
Описание Более ранняя из двух отметок времени. Пример 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(1992, 9, 20, 13, 34, 27.123456) Результат 1992-09-20 13:34:27.123456
Описание Маркер времени для заданного количества мкс, прошедших с эпохи. Пример make_timestamp(1667810584123456) Результат 2022-11-07 08:43:04.123456
Описание Название месяца (на английском языке). Пример monthname(TIMESTAMP '1992-09-20') Результат September
Описание Преобразует маркер времени в строку в соответствии со строкой формата . Пример strftime(timestamp '1992-01-01 20:38:40', '%a, %-d %B %Y - %I:%M:%S %p') Результат Wed, 1 January 1992 - 08:38:40 PM
Описание Преобразует строку 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
Описание Преобразует строку 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
Описание Округляет 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
Описание Округляет 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(1284352323.5) Результат 2010-09-13 04:32:03.5+00
Описание Преобразует строку 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
Описание Преобразует строку 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 '2001-04-10', TIMESTAMP '2001-04-11', INTERVAL 30 MINUTE)
Описание Генерирует таблицу маркеров времени в полуоткрытом диапазоне, делая шаг через интервал. Пример range(TIMESTAMP '2001-04-10', TIMESTAMP '2001-04-11', INTERVAL 30 MINUTE)