Re: Bug #605: timestamp(timestamp('a timestamp)) no longer works - Mailing list pgsql-bugs

From Thomas Lockhart
Subject Re: Bug #605: timestamp(timestamp('a timestamp)) no longer works
Date
Msg-id 3C7F9B47.184FAE8@fourpalms.org
Whole thread Raw
In response to Bug #605: timestamp(timestamp('a timestamp)) no longer works  (pgsql-bugs@postgresql.org)
Responses Re: Bug #605: timestamp(timestamp('a timestamp)) no longer works  (Andrew McMillan <andrew@catalyst.net.nz>)
List pgsql-bugs
> timestamp(timestamp('a timestamp)) no longer works
> I do this reasonably often in my code by way of being paranoid
> that I might have a date, or a time, where I for sure _really_
> want it to be a timestamp...
> pcnz=# select timestamp('2002-03-01'::timestamp);
> ERROR:  parser: parse error at or near "'"

You *can* coerce timestamps to be timestamps, but in 7.2 non-standard
syntax no longer works to do this. The reason is that "timestamp(p)" now
follows the SQL9x usage of defining a timestamp type with precision "p".
So trying to call a function "timestamp()" no longer works as it did.

You can use SQL9x syntax for the type coersion:

  select cast('2002-03-01'::timestamp as timestamp);

or (not recommended) you can cheat and force the call to the function by
surrounding it in double-quotes:

  select "timestamp"('2002-03-01'::timestamp);

hth

                      - Thomas

pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: Bug #605: timestamp(timestamp('a timestamp)) no longer works
Next
From: "Michael G. Martin"
Date:
Subject: Re: Indexes not always used after inserts/updates/vacuum analyze