time_bucket(bucket_width INTERVAL, timestamp_col TIMESTAMP, origin TIMESTAMP) returns TIMESTAMP
#Группирует временные метки в интервалы для анализа временных рядов. Эта функция совместима с функцией time_bucket в TimescaleDB, что упрощает миграцию и обеспечивает совместимость.
Пример 21.22.
-- Группировать события по часам SELECT time_bucket(INTERVAL '1 hour', created_at) as hour_bucket, COUNT(*) FROM events GROUP BY hour_bucket ORDER BY hour_bucket; -- Группировать с интервалом 15 минут SELECT time_bucket(INTERVAL '15 minutes', timestamp_col), AVG(value) FROM sensor_data WHERE timestamp_col >= '2024-01-01' GROUP BY 1 ORDER BY 1;
Обязательные параметры:
|
Имя |
Тип |
Описание |
|---|---|---|
|
|
|
Интервал времени для группировки (например, |
|
|
|
Столбец с временными метками для группировки |
Необязательные параметры:
|
Имя |
Тип |
Описание |
|---|---|---|
|
|
|
Точка отсчёта для группировки. Интервалы выровнены относительно этой временной метки. |
strftime (timestamp_expr, format_string) returns TEXT
#Форматирует временные метки в виде строк с использованием стандартных кодов форматирования. Эта функция обеспечивает гибкое форматирование временных меток для отображения и экспорта.
Пример 21.23.
-- Форматировать текущую временную метку
SELECT strftime(NOW(), '%Y-%m-%d %H:%M:%S') AS formatted_time;
-- Форматировать временные метки в разных форматах
SELECT
order_id,
strftime(created_at, '%Y-%m-%d') AS order_date,
strftime(created_at, '%H:%M') AS order_time,
strftime(created_at, '%A, %B %d, %Y') AS readable_date
FROM orders;
-- Использовать для секционирования экспорта в файлы
COPY (SELECT * FROM events WHERE event_date = '2024-01-01')
TO 's3://bucket/events/' || strftime('2024-01-01'::timestamp, '%Y/%m/%d') || '/events.parquet';Основные коды форматирования:
%Y: четырёхзначный год (2024).
%m: месяц в числовом формате (01-12).
%d: день месяца (01-31).
%H: час (00-23).
%M: минута (00-59).
%S: секунда (00-59).
%A: полное название дня недели (понедельник).
%B: полное название месяца (январь).
Необязательные параметры:
|
Имя |
Тип |
Описание |
|---|---|---|
|
|
|
Значение временной метки для форматирования |
|
|
|
Строка с кодами форматирования |
strptime(string_expr, format_string) returns TIMESTAMP
#Преобразует строки во временные метки с помощью кодов форматирования.
Пример 21.24.
-- Разобрать строки с датами
SELECT strptime('2024-01-15 14:30:00', '%Y-%m-%d %H:%M:%S') AS parsed_timestamp;
-- Разобрать разные форматы
SELECT
strptime('Jan 15, 2024', '%b %d, %Y') AS date1,
strptime('15/01/2024', '%d/%m/%Y') AS date2,
strptime('2024-01-15T14:30:00Z', '%Y-%m-%dT%H:%M:%SZ') AS iso_date;
-- Разобрать временные метки в журнале
SELECT
log_id,
strptime(timestamp_string, '%Y-%m-%d %H:%M:%S') AS parsed_time,
message
FROM raw_logs;Обязательные параметры:
|
Имя |
Тип |
Описание |
|---|---|---|
|
|
|
Строка для преобразования во временную метку |
|
|
|
Строка форматирования с описанием формата входной строки |
epoch(timestamp_expr) returns BIGINT
#Преобразует временные метки в секунды эпохи Unix (количество секунд, прошедших с 1970-01-01 00:00:00 UTC).
Пример 21.25.
-- Получить текущее время эпохи Unix
SELECT epoch(NOW()) AS current_epoch;
-- Преобразовать временные метки для использования в API
SELECT
event_id,
epoch(event_timestamp) AS epoch_seconds
FROM events;
-- Отфильтровать, используя время эпохи Unix
SELECT * FROM events
WHERE epoch(created_at) > 1640995200; -- After 2022-01-01Обязательные параметры:
|
Имя |
Тип |
Описание |
|---|---|---|
|
|
|
Ассоциативный массив, из которого необходимо извлечь параметры |
|
|
|
Ключ, который необходимо найти в ассоциативном массиве |
epoch_ms(timestamp_expr) returns BIGINT
#Преобразует временные метки в миллисекунды эпохи Unix.
Пример 21.26.
-- Высокоточная временная метка для JavaScript
SELECT epoch_ms(NOW()) AS timestamp_ms;
-- Для данных временных рядов
SELECT
sensor_id,
epoch_ms(reading_time) AS timestamp_ms,
value
FROM sensor_readings;Обязательные параметры:
|
Имя |
Тип |
Описание |
|---|---|---|
|
|
|
Временная метка, которую необходимо преобразовать в миллисекунды эпохи Unix |
epoch_ms(milliseconds) returns TIMESTAMP
#Преобразует миллисекунды эпохи Unix во временную метку.
Пример 21.27.
-- Преобразовать миллисекунды эпохи Unix во временную метку
SELECT epoch_ms(1640995200000) AS timestamp_from_ms; -- 2022-01-01 00:00:00
-- Преобразовать сохранённые миллисекунды обратно во временные метки
SELECT
event_id,
epoch_ms(timestamp_ms) AS event_time
FROM events;Обязательные параметры:
|
Имя |
Тип |
Описание |
|---|---|---|
|
|
|
Миллисекунды, прошедшие с начала эпохи Unix |
epoch_us(timestamp_expr) returns BIGINT
#Преобразовывает временные метки в микросекунды эпохи Unix.
Пример 21.28.
-- Временные метки с точностью до микросекунды SELECT epoch_us(NOW()) AS timestamp_us;
Обязательные параметры:
|
Имя |
Тип |
Описание |
|---|---|---|
|
|
|
Временная метка, которую необходимо преобразовать в микросекунды эпохи Unix |
epoch_ns(timestamp_expr) returns BIGINT
#Преобразовывает временные метки в наносекунды эпохи Unix.
Пример 21.29.
-- Временные метки с точностью до наносекунды SELECT epoch_ns(NOW()) AS timestamp_ns;
Обязательные параметры:
|
Имя |
Тип |
Описание |
|---|---|---|
|
|
|
Временная метка, которую необходимо преобразовать в наносекунды эпохи Unix |
make_timestamp(microseconds) returns TIMESTAMP
#Создаёт временную метку из микросекунд, прошедших с начала эпохи Unix (1970-01-01 00:00:00 UTC).
Пример 21.30.
-- Создать временную метку из текущего времени в микросекундах эпохи Unix SELECT make_timestamp(epoch_us(NOW())) AS reconstructed_timestamp; -- Создать определённую временную метку SELECT make_timestamp(1640995200000000) AS new_years_2022; -- 2022-01-01 00:00:00
Обязательные параметры:
|
Имя |
Тип |
Описание |
|---|---|---|
|
|
|
Микросекунды, прошедшие с начала эпохи Unix |
make_timestamptz(microseconds) returns TIMESTAMPTZ
#Создаёт временную метку с часовым поясом из микросекунд, прошедших с начала эпохи Unix.
Пример 21.31.
-- Создать timestamptz из текущих микросекунд эпохи SELECT make_timestamptz(epoch_us(NOW())) AS reconstructed_timestamptz; -- Создать конкретную timestamptz SELECT make_timestamptz(1640995200000000) AS new_years_2022_tz;
Обязательные параметры:
|
Имя |
Тип |
Описание |
|---|---|---|
|
|
|
Микросекунды, прошедшие с начала эпохи Unix |