Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3962098
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 20, 20262026-05-20T03:03:20+00:00 2026-05-20T03:03:20+00:00

How to get total number of Sunday’s for given date in postgresql

  • 0

How to get total number of Sunday’s for given date in postgresql

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-20T03:03:20+00:00Added an answer on May 20, 2026 at 3:03 am

    The total number of Sundays for a given date can only be either 0 or 1.

    But if you want the number of Sundays within a given date range, then your best bet is a calendar table. To find how many Sundays are in February this year, I’d just

    select count(*) 
    from calendar
    where cal_date between '2011-02-01' and '2011-02-28' and
          day_of_week = 'Sun';
    

    or

    select count(*)
    from calendar
    where year_of_date = 2011 and
          month_of_year = 2 and 
          day_of_week = 'Sun';
    

    Here’s a basic calendar table that you can start with. I also included a PostgreSQL function to populate the calendar table. I haven’t tested this in 8.3, but I’m pretty sure I’m not using any features that 8.3 doesn’t support.

    Note that the “dow” parts assume your days are in English. But you can easily edit those parts to match any language. (I think. But I could be wrong about “easily”.)

    -- Table: calendar
    
    -- DROP TABLE calendar;
    
    CREATE TABLE calendar
    (
      cal_date date NOT NULL,
      year_of_date integer NOT NULL,
      month_of_year integer NOT NULL,
      day_of_month integer NOT NULL,
      day_of_week character(3) NOT NULL,
      CONSTRAINT calendar_pkey PRIMARY KEY (cal_date),
      CONSTRAINT calendar_check CHECK (year_of_date::double precision = date_part('year'::text, cal_date)),
      CONSTRAINT calendar_check1 CHECK (month_of_year::double precision = date_part('month'::text, cal_date)),
      CONSTRAINT calendar_check2 CHECK (day_of_month::double precision = date_part('day'::text, cal_date)),
      CONSTRAINT calendar_check3 CHECK (day_of_week::text = 
    CASE
        WHEN date_part('dow'::text, cal_date) = 0::double precision THEN 'Sun'::text
        WHEN date_part('dow'::text, cal_date) = 1::double precision THEN 'Mon'::text
        WHEN date_part('dow'::text, cal_date) = 2::double precision THEN 'Tue'::text
        WHEN date_part('dow'::text, cal_date) = 3::double precision THEN 'Wed'::text
        WHEN date_part('dow'::text, cal_date) = 4::double precision THEN 'Thu'::text
        WHEN date_part('dow'::text, cal_date) = 5::double precision THEN 'Fri'::text
        WHEN date_part('dow'::text, cal_date) = 6::double precision THEN 'Sat'::text
        ELSE NULL::text
    END)
    )
    WITH (
      OIDS=FALSE
    );
    ALTER TABLE calendar OWNER TO postgres;
    
    -- Index: calendar_day_of_month
    
    -- DROP INDEX calendar_day_of_month;
    
    CREATE INDEX calendar_day_of_month
      ON calendar
      USING btree
      (day_of_month);
    
    -- Index: calendar_day_of_week
    
    -- DROP INDEX calendar_day_of_week;
    
    CREATE INDEX calendar_day_of_week
      ON calendar
      USING btree
      (day_of_week);
    
    -- Index: calendar_month_of_year
    
    -- DROP INDEX calendar_month_of_year;
    
    CREATE INDEX calendar_month_of_year
      ON calendar
      USING btree
      (month_of_year);
    
    -- Index: calendar_year_of_date
    
    -- DROP INDEX calendar_year_of_date;
    
    CREATE INDEX calendar_year_of_date
      ON calendar
      USING btree
      (year_of_date);
    

    And a rudimentary function to populate the table. I haven’t tested this in 8.3 either.

    -- Function: insert_range_into_calendar(date, date)
    
    -- DROP FUNCTION insert_range_into_calendar(date, date);
    
    CREATE OR REPLACE FUNCTION insert_range_into_calendar(from_date date, to_date date)
      RETURNS void AS
    $BODY$
    
    DECLARE
        this_date date := from_date;
    BEGIN
    
        while (this_date <= to_date) LOOP
            INSERT INTO calendar (cal_date, year_of_date, month_of_year, day_of_month, day_of_week)
            VALUES (this_date, extract(year from this_date), extract(month from this_date), extract(day from this_date),
            case when extract(dow from this_date) = 0 then 'Sun'
                 when extract(dow from this_date) = 1 then 'Mon'
                 when extract(dow from this_date) = 2 then 'Tue'
                 when extract(dow from this_date) = 3 then 'Wed'
                 when extract(dow from this_date) = 4 then 'Thu'
                 when extract(dow from this_date) = 5 then 'Fri'
                 when extract(dow from this_date) = 6 then 'Sat'
            end);
            this_date = this_date + interval '1 day';
        end loop;       
    
    END;
    $BODY$
      LANGUAGE plpgsql VOLATILE
      COST 100;
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I want to get the total number of items in the List s in
How can I get the total number of seconds since '1970-01-01 00:00:01' from a
How would I get the total number of rows in an NSOutlineView?
I want to get the total number of all valid e-mail address in a
How can I get each element's width and sum them up? For instance, here
Using the command: wc -l + `find . -name \* -print` You can get
I am implementing Paging in my application. For this I run a query and
I have the query below that fetches 500 records according to certain criteria. The
How do I read data from a file if my file is like this
I want to create a RichTextField at the bottom half of the screen, while

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.