Как получить datetime из интервала в vertica
Я новичок в Vertica.
Я пытаюсь получить дату и время предоставленных секунд.
У меня есть значение секунд с 1980-01-01.
когда я пытаюсь так:
\set interval '''1199283171.887953002212558175021 SECOND'''
SELECT DATE('1980-01-01') + INTERVAL :interval
Я получаю свой вывод:
2018-01-01 14:12:51.887953
(В качестве значения одной секунды задается переменный интервал. Попытка в замазке Linux)
Но я хочу иметь это для моих 100 записей в таблице. Это только для однократного ввода. Я пытался, но не получил это.
Как я могу сделать это для всех значений?
1 ответ
Если я вас правильно понял, у вас есть сто раз значение с плавающей запятой с секундами, что означает количество секунд, прошедших с 1980-01-01 00:00:00, вероятно UTC.
Я нашел три способа сделать это - как вы можете видеть здесь, с таблицей примеров из 10 строк.
Мне было просто лень и я добавил << n >> раз 3600 секунд к вашему начальному значению в секундах. Делает его читаемым, так как в полученной метке времени изменяется только час. Как видите, все выражения возвращают одно и то же.
Это поможет?
WITH input(secs) AS (
SELECT 1199283171.887953002212558175021 + 0 * 3600
UNION ALL SELECT 1199283171.887953002212558175021 + 1 * 3600
UNION ALL SELECT 1199283171.887953002212558175021 + 2 * 3600
UNION ALL SELECT 1199283171.887953002212558175021 + 3 * 3600
UNION ALL SELECT 1199283171.887953002212558175021 + 4 * 3600
UNION ALL SELECT 1199283171.887953002212558175021 + 5 * 3600
UNION ALL SELECT 1199283171.887953002212558175021 + 6 * 3600
UNION ALL SELECT 1199283171.887953002212558175021 + 7 * 3600
UNION ALL SELECT 1199283171.887953002212558175021 + 8 * 3600
UNION ALL SELECT 1199283171.887953002212558175021 + 9 * 3600
)
SELECT
secs
, '1980-01-01'::TIMESTAMP + (secs::VARCHAR(32)||' SECOND')::INTERVAL AS add_interval
, '1980-01-01'::TIMESTAMP + (secs/86400) AS add_day_fraction
, TIMESTAMPADD(MICROSECOND,(1000000*secs)::INT, '1980-01-01'::TIMESTAMP) AS using_function
FROM input;
secs | add_interval | add_day_fraction | using_function
----------------------------------+----------------------------+----------------------------+----------------------------
1199283171.887953002212558175021 | 2018-01-01 14:12:51.887953 | 2018-01-01 14:12:51.887953 | 2018-01-01 14:12:51.887953
1199286771.887953002212558175021 | 2018-01-01 15:12:51.887953 | 2018-01-01 15:12:51.887953 | 2018-01-01 15:12:51.887953
1199290371.887953002212558175021 | 2018-01-01 16:12:51.887953 | 2018-01-01 16:12:51.887953 | 2018-01-01 16:12:51.887953
1199293971.887953002212558175021 | 2018-01-01 17:12:51.887953 | 2018-01-01 17:12:51.887953 | 2018-01-01 17:12:51.887953
1199297571.887953002212558175021 | 2018-01-01 18:12:51.887953 | 2018-01-01 18:12:51.887953 | 2018-01-01 18:12:51.887953
1199301171.887953002212558175021 | 2018-01-01 19:12:51.887953 | 2018-01-01 19:12:51.887953 | 2018-01-01 19:12:51.887953
1199304771.887953002212558175021 | 2018-01-01 20:12:51.887953 | 2018-01-01 20:12:51.887953 | 2018-01-01 20:12:51.887953
1199308371.887953002212558175021 | 2018-01-01 21:12:51.887953 | 2018-01-01 21:12:51.887953 | 2018-01-01 21:12:51.887953
1199311971.887953002212558175021 | 2018-01-01 22:12:51.887953 | 2018-01-01 22:12:51.887953 | 2018-01-01 22:12:51.887953
1199315571.887953002212558175021 | 2018-01-01 23:12:51.887953 | 2018-01-01 23:12:51.887953 | 2018-01-01 23:12:51.887953