PostreSQL - Как преобразовать число с плавающей запятой, содержащее количество секунд, в MM: SS.sss - PullRequest
0 голосов
/ 24 июня 2019

У меня есть float8, который содержит количество секунд, то есть 65.455.Я пытался отформатировать столбец в представлении так, чтобы он читался как 1: 05.455.

Используя команду postgres, например: TO_CHAR ((user_data.totaltime || 'second') :: interval, 'MI: SS ')

Я могу отформатировать его как 1:05, но теряю необходимую точность.

Кто-нибудь знает способ добиться того, что мне нужно?Это не похоже, что интервал позволяет форматировать миллисекунды.

Ответы [ 2 ]

2 голосов
/ 24 июня 2019

Попробуйте justify_interval:

SELECT justify_interval(
          CAST(65.455::text || ' seconds' AS interval)
       );
1 голос
/ 24 июня 2019

Вот довольно грубая сила, которую вы можете сделать, используя функции базовой строки:

SELECT
    FLOOR(65.455 / 60)::text || ':' || LPAD(FLOOR(65.455 % 60)::text, 2, '0') ||
        TRIM(LEADING '0' FROM (65.455 % 1)::text);

Это выводит:

1:05.455

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...