Re: Function Help

Поиск
Список
Период
Сортировка
От Masaru Sugawara
Тема Re: Function Help
Дата
Msg-id 20010928232031.7010.RK73@echna.ne.jp
обсуждение исходный текст
Ответ на Function Help  ("Brian C. Doyle" <doyleb@corp.earthlink.net>)
Список pgsql-general
Brian C. Doyle <doyleb@corp.earthlink.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@echna.ne.jp


В списке pgsql-general по дате отправления:

Предыдущее
От: Ryan Ho
Дата:
Сообщение: Recreating unique index for primary key
Следующее
От: Edward Muller
Дата:
Сообщение: Re: Double Quoting Table Names????