From: | Masaru Sugawara <rk73(at)echna(dot)ne(dot)jp> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: Function Help |
Date: | 2001-09-28 23:17:50 |
Message-ID: | 20010929081723.7680.RK73@echna.ne.jp |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Brian C. Doyle <doyleb(at)corp(dot)earthlink(dot)net> wrote:
> I am working on a function to determine the date of the first saturday of
> the month.
>
> Currently I have:
>
> CREATE FUNCTION first_saturday(date)
> RETURNS date
> AS '
> Select CASE WHEN date_part(\'dow\',\'$1\'::DATE)=0 THEN date(\'$1\')+6
> WHEN date_part(\'dow\',\'$1\'::DATE)=1 THEN date(\'$1\')+5
> WHEN date_part(\'dow\',\'$1\'::DATE)=2 THEN date(\'$1\')+4
> WHEN date_part(\'dow\',\'$1\'::DATE)=3 THEN date(\'$1\')+3
> WHEN date_part(\'dow\',\'$1\'::DATE)=4 THEN date(\'$1\')+2
> WHEN date_part(\'dow\',\'$1\'::DATE)=5 THEN date(\'$1\')+1
> WHEN date_part(\'dow\',\'$1\'::DATE)=6 THEN date(\'$1\')+0
> END'LANGUAGE 'sql'
>
> I get an error that $1 is not a valid date. But I want that to be the
> variable I enter...
> what Am I doing wrong???
Hi,Brian.
It doesn't need the meta character \' that you write on both sides
of $1, so you get the error.
By the way, I think the following query is one of what you want.
CREATE FUNCTION first_saturday(date)
RETURNS date
AS '
SELECT (month.firstday
+ ((6 - date_part(''dow'', month.firstday))::text || '' day''
)::interval
)::date
FROM (select ($1::timestamp
- ((date_part(''day'', $1::timestamp)-1)::text
|| '' day''
)::interval
) AS firstday
) AS month
' LANGUAGE 'sql'
;
ex.
# select first_saturday('2001/9/28'::date);
first_saturday
----------------
2001-09-01
# select first_saturday('2001/10/28'::date);
first_saturday
----------------
2001-10-06
# select first_saturday('1999/9/28'::date);
first_saturday
----------------
1999-09-04
# select first_saturday('2010/9/28'::date);
first_saturday
----------------
2010-09-04
Regards.
------------------
Masaru Sugawara
rk73(at)echna(dot)ne(dot)jp
From | Date | Subject | |
---|---|---|---|
Next Message | Tatsuo Ishii | 2001-09-29 00:21:45 | Re: Problem with the accents |
Previous Message | Mark kirkwood | 2001-09-28 22:33:58 | Re: Migrating to DB2 from Postgres |