Превращать различие между датами в формат hora:minutos в Redshift

Я избавляю серию статистики Amazon Redshift с консультацией SQL следующего способа:

`select a.query as idquery,a.starttime as inicio,a.endtime as 
fin,datediff(ms,inicio,fin) as tiempototal,
datediff(ms,queue_start_time,queue_end_time) as tiempo_total_cola 
from stl_query a, stl_wlm_query b where a.query=b.query and tiempototal >= 
14400000 order by idquery`

Поле tiempototal он возвращает мне стоимость в м: 33084769 и мне хотелось бы получать это в формате HH:MM:SS

Как я могу конвертировать в той же консультации tiempototalи tiempo_total_cola в формате HH:MM:SS? А именно, я нуждаюсь в том, чтобы достать продолжительность службы в часы и минуты.

1
задан 19.03.2019, 12:33
1 ответ

Ты можешь с немного aritmГ©tica

select floor(33084769 / 86400000)           as dias,
       mod(floor(33084769 / 3600000), 24)   as horas,
       mod(floor(33084769 / 60000), 60)     as mins,
       mod(floor(33084769 / 1000), 60)      as seg

dias horas mins  seg
---- ----- ----- -----
0,00 9,00  11,00 24,00

Каждая стоимость, из-за которой ты делишь, - количество millisegundos одного dГ - в, час, минуты и секунды.

0
ответ дан 02.12.2019, 05:28
  • 1
    Он бросает в меня следующую ошибку: 42883: operator does not exist: double precision % integer – lk2_89 19.03.2019, 16:59
  • 2
    Привет @lk2_89, не sabí в, в redshift % модуля MOD он тестирует мой ú ltima edició n – Patricio Moracho 19.03.2019, 17:05
  • 3
    Спасибо @Patricio Moracho. Я intentá ndolo с ú ltimo формат, но мне продолжает давать ошибка. Я это тестирую: select query as idquery, exec_start_time as inicioproceso, exec_end_time as finproceso, datediff(ms,inicioproceso,finproceso) as tiempototal, mod(floor(tiempototal/3600000),24) as horas from stl_wlm_query where tiempototal >= 14400000 order by idquery и он бросает в меня следующую ошибку: 42883: function mod(double precision, integer) does not exist – lk2_89 19.03.2019, 17:14
  • 4
    Ошибка, кажется, показывала, что está s призывая funció n mod() с pará метры, отличные от double первый и int второй. Podrí схвати проверять это? – Patricio Moracho 19.03.2019, 17:36
  • 5
    Если, он был pasá ndole pará отличные метры. Я это решил делая предварительный casteo: mod(cast(floor(tiempototal/3600000) as integer),24) – lk2_89 19.03.2019, 17:43

Теги

Похожие вопросы