Postgresql - запрос на умножение времени на число - PullRequest
0 голосов
/ 26 октября 2018

Я создаю запрос для умножения времени на число.

Время является результатом запроса о годовом рабочем времени человека. Цель - рассчитать 25%, тогда я хочу умножить время на 0,25

.

Пример:

Time1: 100:00:00

[формат H: M: s]

Для этого я пробовал этот запрос:

SELECT '100:00:00'::time * 0.25

PostgreSQL возвращает:

ERROR: the time / date value is out of range: «100: 00: 00»
LINE 2: SELECT '100: 00: 00' :: time * 0.25

Ошибка очевидна. Мое преобразование времени вне диапазона, потому что объект времени действителен только до 24 часов. В этом случае работает нормально:

SELECT '24:00:00'::time * 0.25

Результат:

"06:00:00"

У кого-нибудь есть идеи?

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Вы можете использовать INTERVAL, например:

select interval '100 hours 0 minutes 0 seconds' * 0.25

или:

select interval '100:00:00' * 0.25

или:

select '100:00:00'::interval * 0.25

Результат (для всехиз них):

 ?column?
 --------
 25:00:00
0 голосов
/ 26 октября 2018

Значения времени ограничены 24 часами. Вы можете сделать расчет, используя другие единицы. Например, следующее переводит это в секунды:

select 0.25 * ( (string_to_array('100:00:00', ':'))[1]::int*60*60 +
                (string_to_array('100:00:00', ':'))[2]::int*60 +
                (string_to_array('100:00:00', ':'))[3]::int
              ) as num_seconds

Обратите внимание, что вы также не можете представить результат как время

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