2012-07-02 15 views
13

Necesito agregar minutos provenientes de una columna entera con una marca de tiempo para comparar con otra columna.PostgreSQL: Agregar intervalo a Timestamp a partir del valor de columna

Aquí está un ejemplo:

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 es número entero (minutos)
necesito para verificar si data_extracao(timestamp) es mayor entonces NOW() + l.periodicidade(integer - minutes).

¿Cómo puedo hacerlo?

+0

Aparte: alias mal en su consulta: '' e.data_extracao' <--> extracao como t3' –

Respuesta

22

Usted puede escribir su consulta como esta:

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) 

Como se puede ver, se puede multiplicar con intervalos de números enteros por lo que con INTERVAL '1 minute' a definir su unidad base y multiplicar su intervalo de tiempo real.

Espero que ayude

+0

gran ayuda! Gracias –

Cuestiones relacionadas