2012-07-02 15 views
13

Potrzebuję dodać minuty pochodzące z kolumny całkowitej ze znacznikiem czasu, aby porównać ją z inną kolumną.PostgreSQL: Dodaj interwał do datownika z wartości kolumny

Oto przykład:

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 INTEGER (minuty)
potrzebne do sprawdzenia, czy data_extracao(timestamp) jest większa niż NOW() + l.periodicidade(integer - minutes).

Jak mogę to zrobić?

+0

marginesie: źle alias w zapytaniu: '' extracao e.data_extracao' <--> jak t3' –

Odpowiedz

22

Możesz napisać zapytanie tak:

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) 

Jak widać, można mnożyć interwały z całkowitymi tak z INTERVAL '1 minute' zdefiniować swoją stację bazową i pomnożyć swój rzeczywisty przedział czasowy.

nadzieję, że pomoże

+0

wielka pomoc! Dzięki –