Martijn van Oosterhout <kleptog(at)svana(dot)org> writes:
> postgres=# prepare test1 as select timestamp '2009-01-01';
> PREPARE
> postgres=# prepare test2 as select timestamp $1;
> ERROR: syntax error at or near "$1"
> The workaround is simple, use a cast instead, but is there a particular
> reason why you can't use a parameter there?
"timestamp foo" is legitimate syntax only when foo is a string literal.
It is not a general cast syntax. We wouldn't even support it at all,
because it's so syntactically messy and inextensible, except that the
SQL standard requires it for literals of certain datatypes.
regards, tom lane