Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE FUNCTION f_mondays(dr daterange)
- RETURNS TABLE (day date) AS
- $func$
- SELECT generate_series(a + (8 - EXTRACT(ISODOW FROM a)::int) % 7
- , z
- , interval '7 days')::date
- FROM (
- SELECT CASE WHEN lower_inc(dr) THEN lower(dr) ELSE lower(dr) + 1 END AS a
- , CASE WHEN upper_inc(dr) THEN upper(dr) ELSE upper(dr) - 1 END AS z
- ) sub
- $func$ LANGUAGE sql;
- SELECT day FROM f_mondays('[2014-04-14,2014-05-02)'::daterange);
- day
- ----------
- 2014-04-14
- 2014-04-21
- 2014-04-28
- create function f(dr daterange)
- returns setof date as $$
- select d::date
- from generate_series(
- lower(dr), upper(dr), interval '1 day'
- ) s (d)
- where
- extract(dow from d) = 1 and
- d::date <@ dr;
- ;
- $$ language sql;
- select f(daterange('2014-01-01', '2014-01-20'));
- f
- ------------
- 2014-01-06
- 2014-01-13
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement