drno-reg
@drno-reg
см не кратко

Как правильно сделать round в postgresql: ERROR: function round(double precision, integer) does not exist?

написал запрос

select
              'request_median_duration' as metric_name,
              EXTRACT(EPOCH FROM request_median_duration)/60 as metric_value,
              TO_CHAR(NOW(), 'YYYY-MM-DD HH:MM:SS') as push_dttm
              from mp_statistics


нужно округлить до 2 знака до запятой
попробовал сделать так

select
              'request_median_duration' as metric_name,
              ROUND(EXTRACT(EPOCH FROM request_median_duration)/60,2) as metric_value,
              TO_CHAR(NOW(), 'YYYY-MM-DD HH:MM:SS') as push_dttm
              from mp_statistics


возвращается ошибка

SQL Error [42883]: ERROR: function round(double precision, integer) does not exist
  Подсказка: No function matches the given name and argument types. You might need to add explicit type casts.
  Позиция: 94


выкрутился так

select
              'request_median_duration' as metric_name,
              ROUND(EXTRACT(EPOCH FROM request_median_duration)/60*100)/100 as metric_value,
              TO_CHAR(NOW(), 'YYYY-MM-DD HH:MM:SS') as push_dttm
              from mp_statistics


какой есть еще более изящный вариант?
  • Вопрос задан
  • 2613 просмотров
Решения вопроса 1
drno-reg
@drno-reg Автор вопроса
см не кратко
нашли способ сделать преобразование типа через CAST

select
              'request_median_duration' as metric_name,
              round(cast(EXTRACT(EPOCH FROM request_median_duration)/60 as numeric),2) as metric_value,
              TO_CHAR(NOW(), 'YYYY-MM-DD HH:MM:SS') as push_dttm
              from mp_statistics
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы