2013-10-27 8 views
9

में एक महीने पहले का टाइमस्टैम्प प्राप्त करें मेरे पास एक पोस्टग्रेएसक्यूएल डेटाबेस है जिसमें एक तालिका तेजी से बड़ी हो जाती है (हर महीने कई मिलियन पंक्तियां या तो) इसलिए मैं समय-समय पर उस तालिका की सामग्री को एक अलग तालिका में संग्रहीत करना चाहता हूं ।पोस्टग्रेएसक्यूएल

मैं दूसरी पंक्ति में एक महीने से अधिक पुरानी सभी पंक्तियों को संग्रहीत करने के लिए रात में एक .sql फ़ाइल निष्पादित करने के लिए क्रॉन नौकरी का उपयोग करने का इरादा रख रहा हूं।

मेरे पास क्वेरी ठीक काम कर रही है, लेकिन मुझे यह जानने की जरूरत है कि कैसे एक महीने पहले गतिशीलता को गतिशील बनाना है।

time कॉलम 2013-10-27 06:53:12 प्रारूप में संग्रहीत है और मुझे यह जानने की जरूरत है कि एक महीने पहले एक टाइमस्टैम्प बनाने के लिए SQL क्वेरी में क्या उपयोग करना है। उदाहरण के लिए, अगर आज अक्टूबर 27, 2013 है, मैं क्वेरी सभी पंक्तियों जहां समय < 2013-09-27 00:00:00

+1

"समय कॉलम प्रारूप 2013-10-27 06:53:12 प्रारूप में संग्रहीत है" - आपको एक ['टाइमस्टैम्प 'कॉलम] (http://www.postgresql.org/docs/current/interactive) का उपयोग करना चाहिए /datatype-datetime.html) इसके लिए, एक स्वरूपित स्ट्रिंग नहीं है, क्योंकि इससे चीजों को बहुत आसान और अधिक कुशल बना दिया जाएगा। – IMSoP

+0

"30 दिन" "एक महीने" से अधिक सटीक है, और "बिल्कुल एक महीने" अनिवार्य रूप से व्यर्थ है। एसक्यूएल में, यदि आप 2013-03-28, 03-29, 03-30, और 03-31 से बिल्कुल एक महीने घटाते हैं, और आपको वही उत्तर मिलता है: 2013-02-28। क्या वो वजह बन रही हे? –

+0

@IMSoP दुर्भाग्यवश, मेरे पास डेटाबेस संरचना पर नियंत्रण नहीं है। मैं एक क्वासेल आईआरसी कोर चला रहा हूं, और बैकलॉग तालिका में 18 मिलियन पंक्तियां क्लाइंट लोडिंग में धीरे-धीरे लोड हो रही हैं, इसलिए क्लाइंट स्थिरता को बनाए रखने के लिए मुझे हाल ही की पंक्तियों को संग्रहित करने की आवश्यकता है। –

उत्तर

18

प्रश्न आईआरसी में एक दोस्त द्वारा उत्तर दिया गया था:

'now'::timestamp - '1 month'::interval

टाइमस्टैम्प वापसी 00:00:00 भयानक महत्वपूर्ण नहीं था के बाद, तो यह मेरे इरादों के लिए काम करता है।

+2

+1 यह रेडशिफ्ट में भी काम करता है – fortran

26
select date_trunc('day', NOW() - interval '1 month') 

इस क्वेरी 00:00:00 करने के लिए तिथि वापस आ जाएगी अब और गोल समय से एक माह पहले मैच के लिए चाहते हैं।

+1

ध्यान दें कि यह एक वास्तविक टाइमस्टैम्प वापस करेगा; प्रश्न के शब्द से, वास्तविक कॉलम में एक स्ट्रिंग है, इसलिए आपको इसकी तुलना करने के लिए इसे डालना होगा: 'कहां कास्ट ("टाइम" टाइमस्टैम्प के रूप में) IMSoP

संबंधित मुद्दे