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®
[EMAIL PROTECTED]
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
---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster