PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

एक तालिका में प्रारंभ और समाप्ति तिथि से Postgres में Generate_series

इसके लिए आपको सीटीई की आवश्यकता नहीं है, यह आवश्यकता से अधिक महंगा होगा।
और आपको timestamp पर डालने की आवश्यकता नहीं है , परिणाम पहले से ही है डेटा प्रकार का timestamp जब आप timestamp feed फ़ीड करते हैं टाइप करने के लिए generate_series() . विवरण यहाँ:

  • PostgreSQL में दो तिथियों के बीच समय श्रृंखला उत्पन्न करना

पोस्टग्रेज में 9.3 या बाद में आप LATERAL . का उपयोग कर सकते हैं शामिल हों:

SELECT to_char(ts, 'YYYY-MM-DD HH24') AS formatted_ts
FROM  (
   SELECT min(start_timestamp) as first_date
        , max(start_timestamp) as last_date
   FROM   header_table
   ) h
  , generate_series(h.first_date, h.last_date, interval '1 hour') g(ts);

वैकल्पिक रूप से to_char() . के साथ आपके द्वारा उल्लिखित प्रारूप में परिणाम को टेक्स्ट के रूप में प्राप्त करने के लिए।

यह किसी भी . में काम करता है पोस्टग्रेज संस्करण:

SELECT generate_series(min(start_timestamp)
                     , max(start_timestamp)
                     , interval '1 hour') AS ts
FROM   header_table;

आमतौर पर थोड़ा तेज़।
SELECT में सेट-रिटर्निंग फ़ंक्शन को कॉल करना सूची एक गैर-मानक-एसक्यूएल सुविधा है और कुछ लोगों द्वारा इसे पसंद किया जाता है। इसके अलावा, व्यवहार संबंधी विषमताएं थीं (हालांकि इस साधारण मामले के लिए नहीं) जो अंततः पोस्टग्रेज 10 में तय की गई थीं। देखें:

  • सेलेक्ट क्लॉज में कई सेट-रिटर्निंग फंक्शन के लिए अपेक्षित व्यवहार क्या है?

नोट NULL . में एक सूक्ष्म अंतर हैंडलिंग:

. के बराबर
max(start_timestamp)

के साथ प्राप्त किया जाता है

ORDER BY start_timestamp DESC NULLS LAST
LIMIT 1

बिना NULLS LAST NULL मान पहले आते हैं अवरोही क्रम में (यदि वहाँ कर सकते हैं start_timestamp में NULL मान हो ) आपको last_date . के लिए NULL मिलेगा और आपकी क्वेरी खाली हो जाएगी।

विवरण:

  • एक PostgreSQL क्वेरी में DESC ऑर्डर करते समय NULL मान पहले क्यों आते हैं?


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्वेरी का उपयोग करके माता-पिता को पुनरावर्ती रूप से खोजें

  2. हेरोकू को डेटा पुश करते समय त्रुटि:समय क्षेत्र विस्थापन सीमा से बाहर

  3. परफेक्ट के साथ पोस्टग्रेएसक्यूएल ट्रेसिंग

  4. मैं SQLAlchemy में UUIDs का उपयोग कैसे कर सकता हूं?

  5. अपरिवर्तनीय, स्थिर और अस्थिर कीवर्ड फ़ंक्शन के व्यवहार को कैसे प्रभावित करते हैं?