Re: current_date / datetime stuff - Mailing list pgsql-sql

From Michael Glaesemann
Subject Re: current_date / datetime stuff
Date
Msg-id 7B00D29F-089A-4A19-B9C1-0FF8A949DDA3@seespotcode.net
Whole thread Raw
In response to Re: current_date / datetime stuff  (Michael Glaesemann <grzm@seespotcode.net>)
Responses Re: current_date / datetime stuff  (Kristo Kaiv <kristo.kaiv@skype.net>)
List pgsql-sql
On Jun 4, 2007, at 10:59 , Michael Glaesemann wrote:

>
> On Jun 4, 2007, at 10:27 , Andrew Sullivan wrote:
>
>> On Mon, Jun 04, 2007 at 10:04:37AM -0500, Joshua wrote:
>>> that will return the date of the first Monday of the month?
>>
>> I guess you need to write a function to do this.  I suppose you could
>> do it by finding out what day of the week it is and what the date is,
>> then counting backwards to the earliest possible Monday.
>
> As Andrew said, there's no built-in function to do this, but it's  
> easy enough to write one. Here's a rough example (very lightly  
> tested and probably overly complicated)

And a little simpler:

CREATE OR REPLACE FUNCTION first_dow_of_month(DATE, INTEGER)
RETURNS DATE
IMMUTABLE
LANGUAGE SQL AS $_$
SELECT v_first_day_of_month + ( 7 + $2 - v_day_of_week) % 7       AS first_dow_of_month
FROM (     SELECT v_first_day_of_month            , extract('dow' from v_first_day_of_month)::integer
        AS v_day_of_week     FROM (SELECT date_trunc('month', $1)::date)          AS mon(v_first_day_of_month)) as
calc;
$_$;

CREATE OR REPLACE FUNCTION first_monday(DATE)
RETURNS DATE
IMMUTABLE
LANGUAGE SQL AS $_$
SELECT first_dow_of_month($1, 1);
$_$;

Michael Glaesemann
grzm seespotcode net




pgsql-sql by date:

Previous
From: "Rodrigo De León"
Date:
Subject: Re: current_date / datetime stuff
Next
From: Ranieri Mazili
Date:
Subject: Encrypted column