Как рассчитать время в строковом типе из массива - PullRequest
0 голосов
/ 01 мая 2020

В моей PostgreSql БД есть столбец с именем period в таблице Trip,

Пример period в одной строке выглядит следующим образом:

["2020-04-14 00:29:11+00","2020-04-14 02:27:53+00"]

здесь член массива - это время в строковом типе.

Я хочу вычислить, сколько секунд между этими двумя моментами, это мой запрос:

select (EXTRACT(EPOCH FROM (tp."period")[1])-EXTRACT(EPOCH FROM tp."period"[0])) from "Trip" tp

Но я получаю ОШИБКУ:

/* ERROR:  cannot subscript type tstzrange because it is not an array */

Не могли бы вы помочь решить эту проблему?

1 Ответ

1 голос
/ 01 мая 2020

У вас есть диапазон, а не массив. Для доступа к границам диапазона используйте lower() (для нижней границы) и upper() (для верхней границы).

SELECT extract(epoch FROM upper(tp.period)) - extract(epoch FROM lower(tp.period))
       FROM "Trip" tp;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...