PostgreSQL: добавить интервал к метке времени из значения столбца

Мне нужно добавить минуты из целочисленного столбца с отметкой времени для сравнения с другим столбцом.

Вот пример:

 SELECT t1.id_liame, t1.id_table, t1.periodicidade , t3.data_extracao, 
    CASE WHEN(NOW() < (e.data_extracao + INTERVAL t1.periodicidade || '
    MINUTES')) 
    THEN 'yes' ELSE 'no' END
    FROM table1 as t1 LEFT JOIN liame_has_extracao as t2 USING(id_liame)
    LEFT JOIN extracao as t3 USING(id_extracao)

l.periodicidade — целое число (минуты)
Мне нужно проверить, больше ли data_extracao(timestamp), чем NOW() + l.periodicidade(integer - minutes).

Как мне это сделать?


person NakaBr    schedule 02.07.2012    source источник
comment
В сторону: неправильный псевдоним в вашем запросе: e.data_extracao ‹--› extracao as t3   -  person Erwin Brandstetter    schedule 02.07.2012


Ответы (1)


Вы можете написать свой запрос следующим образом:

SELECT 
   t1.id_liame,
   t1.id_table,
   t1.periodicidade,
   t3.data_extracao,
   CASE
      WHEN(NOW() < (t3.data_extracao + (INTERVAL '1 min' * t1.periodicidade))) 
      THEN 'yes' ELSE 'no'
   END
FROM table1 AS t1
LEFT JOIN liame_has_extracao AS t2 USING(id_liame)
LEFT JOIN extracao AS t3 USING(id_extracao)

Как видите, вы можете умножать интервалы на целые числа, поэтому с помощью INTERVAL '1 minute' вы определяете свою базовую единицу и умножаете фактический временной интервал.

надеюсь, это поможет

person Frank Bollack    schedule 02.07.2012