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

PostgreSQL में अंतराल से कुछ निश्चित दिनों (सप्ताहांत) की संख्या प्राप्त करना

निम्नलिखित फ़ंक्शन दो तिथियों के बीच पूर्ण सप्ताहांत दिनों की संख्या लौटा रहा है। जैसा कि आपको पूरे दिनों की आवश्यकता है, आप फ़ंक्शन को कॉल करने से पहले टाइमस्टैम्प को तारीखों में डाल सकते हैं। पहली तारीख दूसरी से पहले सख्ती से नहीं होने की स्थिति में यह 0 लौटाता है।

CREATE FUNCTION count_full_weekend_days(date, date)
  RETURNS int AS
$BODY$
  SELECT
    ($1 < $2)::int
      *
    (
      (($2 - $1) / 7) * 2
        + 
      (EXTRACT(dow FROM $1)<6 AND EXTRACT(dow FROM $2)>0 AND EXTRACT(dow FROM $1)>EXTRACT(dow FROM $2))::int * 2
        +
      (EXTRACT(dow FROM $1)=6 AND EXTRACT(dow FROM $2)>0)::int
        +
      (EXTRACT(dow FROM $2)=0 AND EXTRACT(dow FROM $1)<6)::int
    );
$BODY$
  LANGUAGE 'SQL' IMMUTABLE STRICT;

उदाहरण:

SELECT COUNT_FULL_WEEKEND_DAYS('2009-04-10', '2009-04-20');
# returns 4

SELECT COUNT_FULL_WEEKEND_DAYS('2009-04-11', '2009-04-20');
# returns 3 (11th is Saturday, so it shouldn't be counted as full day)

SELECT COUNT_FULL_WEEKEND_DAYS('2009-04-12', '2009-04-20');
# returns 2 (12th is Sunday, so it shouldn't be counted as full day)

SELECT COUNT_FULL_WEEKEND_DAYS('2009-04-13', '2009-04-20');
# returns 2

पूरे सप्ताहांत के दिनों को छोड़कर दिनों की संख्या प्राप्त करने के लिए, बस ऊपर दिए गए फ़ंक्शन से दिनों की संख्या घटाएं:

SELECT
  '2009-04-20'::date
    -
  '2009-04-13'::date
    -
   COUNT_FULL_WEEKEND_DAYS('2009-04-13', '2009-04-20');


  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. PostgreSQL 9.0 में डेटाबेस निर्माण समय कैसे प्राप्त करें?

  4. पोस्टग्रेज में पथ से फ़ाइल का नाम विभाजित करें

  5. एकाधिक तालिकाओं पर अद्वितीय बाधा