पिछले 10 दिनों से तारीख के साथ रिकॉर्ड कैसे सूचीबद्ध करें?


101
SELECT Table.date FROM Table WHERE date > current_date - 10;

क्या यह PostgreSQL पर काम करता है?

जवाबों:


190

हाँ यह PostgreSQL में काम करता है (स्तंभ " तिथि " को डेटाटाइप का मानकर date) आप इसे क्यों नहीं आज़माते हैं?

मानक ANSI SQL प्रारूप होगा:

SELECT Table.date 
FROM Table 
WHERE date > current_date - interval '10' day;

मैं उस प्रारूप को पसंद करता हूं क्योंकि यह चीजों को पढ़ना आसान बनाता है (लेकिन यह जैसा है current_date - 10)।


1
क्वेरी होनी चाहिए: तालिका का चयन करें। तालिका से जहां दिनांक> वर्तमान_डेट - अंतराल '10 दिन ';
user2694306

4
@ user2694306: interval '10 day'पोस्टग्रेज सिंटैक्स है। interval '10' daySQL मानक पर आधारित वाक्यविन्यास है और Postgres द्वारा समर्थित
a_horse_with_no_name

1
अंतराल 9 होना चाहिए । 10 वास्तव में आपको आज से 11 दिन पहले देता है।
डेविड हे

1
@DavidHe: यह मूल उत्तर के समान काम करता है। जो उपयोग करता है 10, नहीं9
a_horse_with_no_name

3
बस एक नोट: Redshift पर, @ user2694306 का सूत्रीकरण कार्य करता है: अंतराल '10 दिन '। अंतराल '10' दिन Redshift पर काम नहीं करता है।
बेन

33

http://www.postgresql.org/docs/current/static/functions-datetime.html उन ऑपरेटरों को दिखाता है जिन्हें आप दिनांक और समय (और अंतराल) के साथ काम करने के लिए उपयोग कर सकते हैं।

इसलिए आप यह चाहते हैं

SELECT "date"
FROM "Table"
WHERE "date" > (CURRENT_DATE - INTERVAL '10 days');

ऊपर दिए गए ऑपरेटर / कार्य विस्तार से प्रलेखित हैं:


9

मेरे परीक्षण (और PostgreSQL dox ) से मेरी समझ यह है कि उद्धरणों को अन्य उत्तरों से अलग तरीके से करने की आवश्यकता है, और इस तरह "दिन" को भी शामिल करना चाहिए:

SELECT Table.date
  FROM Table 
  WHERE date > current_date - interval '10 day';

यहां प्रदर्शित किया गया है (आप इसे किसी भी पोस्टग्रैब्स डीबी पर चलाने में सक्षम होना चाहिए):

SELECT DISTINCT current_date, 
                current_date - interval '10' day, 
                current_date - interval '10 days' 
  FROM pg_language;

परिणाम:

2013-03-01  2013-03-01 00:00:00 2013-02-19 00:00:00

दरअसल, मुझे याद है कि ब्रैडली का जवाब सही निकला। वैसे भी, मैं यहां सबूत के तौर पर छोड़ दूंगा कि यह सही तरीका है। स्वीकृत उत्तर गलत है (कम से कम पोस्टग्रे के संस्करण के लिए मैं दौड़ रहा हूं)
अत्यधिक अनियमित

0

मैं डेटाटिप्स की जाँच करूँगा।

current_date की "तिथि" डेटापाइप है, 10 एक संख्या है, और Table.date - आपको अपनी तालिका देखने की आवश्यकता है।


0

आप इसके बीच भी उपयोग कर सकते हैं:

SELECT Table.date
  FROM Table 
  WHERE date between current_date and current_date - interval '10 day';

betweenतो यह सही ढंग से के रूप में किया जा सकता है, पहले न्यूनतम मान वाले हो गया है SELECT Table.date FROM Table WHERE date between current_date - interval '10 day' and current_date;
प्रकार
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.