Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

Re: NULLIF problem




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

Michael Glaesemann
grzm seespotcode net





Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group