2012-07-02 44 views
13

Tôi cần phải thêm phút đến từ cột số nguyên với dấu thời gian để so sánh với một cột khác.PostgreSQL: Thêm Khoảng thời gian vào Dấu thời gian từ giá trị cột

Dưới đây là một ví dụ:

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 là số nguyên (phút)
tôi cần phải xác minh nếu data_extracao(timestamp) lớn rồi NOW() + l.periodicidade(integer - minutes).

Tôi có thể làm như thế nào?

+0

Ngoài: alias sai trong câu hỏi của bạn: 'e.data_extracao' <--> 'extracao như t3' –

Trả lời

22

Bạn có thể viết truy vấn của bạn như thế này:

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) 

Như bạn thấy, bạn có thể nhân khoảng với số nguyên như vậy với INTERVAL '1 minute' bạn xác định đơn vị cơ sở của bạn và nhân khoảng thời gian thực tế của bạn.

Hy vọng rằng sẽ giúp

+0

lớn giúp đỡ! Cảm ơn –

Các vấn đề liên quan