Thread: IsDate function in plpgsql

IsDate function in plpgsql

From
"Sistemas C.M.P."
Date:
A few days ago, someone in this list gives  me a function (plpgsql) that evaluates if a string is a valid date or not.
It returns 1 or 0 (valid/Not Valid)
The problem is that if the argument is a NULL field the function returns 1.
I don't have experience with plpgsql language.
This is the function
 
begin
  perform $1::date;
  return 1;
exception when others then
  return 0;
end

Re: IsDate function in plpgsql

From
Ketema Harris
Date:
I think someone will show you a better way, but if all you need to do is account for the NULLS...

begin
  if $1 is null then
     return 0;
  else
     perform $1::date;
     return 1;
  end if;
exception when others then
return 0;
end


On 4/27/06 10:34 AM, "Sistemas C.M.P." <sistemascmp@redynet4.com.ar> wrote:

A few days ago, someone in this list gives  me a function (plpgsql) that evaluates if a string is a valid date or not.
It returns 1 or 0 (valid/Not Valid)
The problem is that if the argument is a NULL field the function returns 1.
I don't have experience with plpgsql language.
This is the function

begin
  perform $1::date;
  return 1;
exception when others then
  return 0;
end


Re: IsDate function in plpgsql

From
Bricklen Anderson
Date:
Sistemas C.M.P. wrote:
> A few days ago, someone in this list gives  me a function (plpgsql) that
> evaluates if a string is a valid date or not.
> It returns 1 or 0 (valid/Not Valid)
> The problem is that if the argument is a NULL field the function returns 1.
> I don't have experience with plpgsql language.
> This is the function
>
> begin

>   perform $1::date;
>   return 1;
> exception when others then
>   return 0;
> end

create or replace function datetest (text) returns integer as $$
begin
     if ($1 is null) then
         return 0;
     end if;
     perform $1::date;
     return 1;
exception when others then
     return 0;
end;
$$ language plpgsql;

Alter table alter column using question

From
Craig Servin
Date:
I have a table called type:

type
-------
type_id integer
tvalue smallint
...
..
..

tvalue was a second key on this table which now turns out to be unnecessary.
Before I can remove it I need to change the columns which reference it.  I
wanted to do this with

alter table alter column using

But the using clause I am using does not work.  I think I may just be
misunderstanding how this is done, but I could only find a few examples.

Here is an example of what I have tried:

alter table service.service
alter column environment_tvalue type integer
using select type.type.type_id where tvalue = environment_tvalue and
typeset_id = 1;

Does the expression in the using clause have to be a function?

Any advice would be appreciated.

Thanks,

Craig