Цель:
Иметь столбец (которого нет в таблице), показывающий количество секунд, оставшихся до следующего повторяющегося события, которое является определяется как «последнее выполнено» (timestamptz) в сочетании со столбцом «строка временного интервала», который представляет собой строку, например «7 дней», «25 минут» или «2 недели» (стандартные интервальные строки, совместимые с PG).
Запрос:
SELECT
*,
now() - "last done" - "time span string"::interval AS "seconds left until next"
FROM "recurring events"
ORDER BY "seconds left until next" DESC NULLS LAST;
В столбце «Осталось секунд до следующего» странным образом получаются такие значения, как:
-1 days +00:32:04.389802
Пример ожидаемого значения :
123456
Я не понимаю, почему он не рассчитывается по столбцам. Кажется, что они строят строку их значений интерпретированным образом или что-то в этом роде. Я не знаю, как это описать.
Я пытался :: целое число выражение AS, но это просто дает мне ошибку:
ERROR: cannot cast type interval to integer
Вопрос не столько о правильной «формуле» / порядке фактического выражения, сколько факте, что он не превращает столбец (или, скорее, ячейку) в целое число (представляющее количество секунд, оставшихся для этого события до следующего раза).