From: | Erik Jones <erik(at)myemma(dot)com> |
---|---|
To: | Michael Glaesemann <grzm(at)seespotcode(dot)net> |
Cc: | "Gera Mel Handumon" <geramel(dot)h(at)gmail(dot)com>, pgsql-sql(at)postgresql(dot)org |
Subject: | Re: NULLIF problem |
Date: | 2007-11-28 19:00:49 |
Message-ID: | F0B783FE-5CDA-4B67-99AA-0F0731308D68@myemma.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
On Nov 27, 2007, at 8:47 PM, Michael Glaesemann wrote:
>
> On Nov 27, 2007, at 21:04 , Gera Mel Handumon wrote:
>
>> I encounter an error if i use NULLIF with timestamp with time zone.
>> eq. dbtime=nullif(mytime,'')
>>
>> i want to null the value of field DBTIME if the variable mytime=" "
>>
>> DBTIME ="timestamp with time zone" datatype
>>
>> error: column DBTIME is of type timestamp with time zone but
>> expression is of type text.
>
> I believe the reason is that '' is not a valid timestamp value:
> think of it this way:
>
> IF mytime = '' THEN
> mytime := NULL;
> END IF;
>
> The first thing it needs to do is compare the mytime value with ''.
> As '' is not a valid timestamp value, it may be casing mytime to
> text. You'll run into problems if you're assigning a text value to
> a timestamp field (which happens after the initial comparison--and
> the cast--are done.)
>
> I think you may need to handle this is you middleware, or handle
> the IF THEN explicitly in a function. Maybe CASE would work:
>
> CASE WHEN mytime = '' THEN NULL
> ELSE CAST(mytime AS TIMESTAMP)
> END
Why not just:
UPDATE table
SET mytime=NULL
WHERE mytime='';
Erik Jones
Software Developer | Emma®
erik(at)myemma(dot)com
800.595.4401 or 615.292.5888
615.292.0777 (fax)
Emma helps organizations everywhere communicate & market in style.
Visit us online at http://www.myemma.com
From | Date | Subject | |
---|---|---|---|
Next Message | Daniel Caune | 2007-11-28 19:50:55 | Re: Strang behaviour SELECT ... LIMIT n FOR UPDATE |
Previous Message | Richard Huxton | 2007-11-28 15:29:23 | Re: obtaining column names from tables or views |