2012-06-06 8 views
39

में दिनों की संख्या कैसे जोड़ें मेरे पास निम्न तालिका projects है।postgresql डेटाटाइम

id title  created_at      claim_window 
1 Project One 2012-05-08 13:50:09.924437  5 
2 Project Two 2012-06-01 13:50:09.924437  10 

ए) मैं deadline = created_at + claim_window(No. of days) गणना के साथ समय सीमा खोजना चाहता हूं।

कुछ ऐसा करने जैसा है।

id title  created_at      claim_window deadline 
1 Project One 2012-05-08 13:50:09.924437  5   2012-05-13 13:50:09.924437 
2 Project Two 2012-06-01 13:50:09.924437  10   2012-06-11 13:50:09.924437 

बी] मैं भी परियोजनाओं जिसका समय सीमा

id title  created_at      claim_window deadline 
1 Project One 2012-05-08 13:50:09.924437  5   2012-05-13 13:50:09.924437 

चला गया है मैं निम्नलिखित की तरह कुछ कोशिश लगाना चाहते हैं।

SELECT * FROM "projects" WHERE (DATE_PART('day', now()- created_at) >= (claim_window+1)) 

लेकिन किसी कारण से यह काम नहीं कर रहा है।

उत्तर

70

यह आपको समय सीमा दे देंगे:

select id, 
     title, 
     created_at + interval '1' day * claim_window as deadline 
from projects 

सभी परियोजनाओं जहां समय सीमा खत्म हो गया है, उपयोग पाने के लिए:

select * 
from (
    select id, 
     created_at + interval '1' day * claim_window as deadline 
    from projects 
) t 
where localtimestamp at time zone 'UTC' > deadline 
+0

लेकिन एक और मुद्दा मेरी created_at पाए जाते है समय के बिना डेटाप्रकार 'टाइमस्टैम्प है जोन' और current_timestamp में डेटाटाइप 'टाइम ज़ोन के साथ टाइमस्टैम्प' है, इसलिए मुझे सही उत्तर नहीं मिलता है – Salil

+0

@ सेलिल: 'LOCALTIMESTAMP' टाइम ज़ोन के बिना 'टाइमस्टैम्प' है –

+0

@ सेलिल: इससे कोई फर्क नहीं पड़ता, नतीजा होगा या तो 'टाइमस्टैंप' या 'टाइमस्टैम्पेट' के साथ, एल के समान ओएनजी के रूप में डेटा समय पर एक ही बिंदु का जिक्र कर रहा है। एक दिन जोड़ना दोनों पर समान प्रभाव डालता है। –