7.2b Timestamp

Started by Dave Smithover 24 years ago3 messagesgeneral
Jump to latest
#1Dave Smith
dave@candata.com

Has some thing changed with the timestamp function since 7.0

7.0
create table t (i int);
insert into t values(1);
select timestamp(date '1998-02-24', time '23:07') from t;
timestamp
------------------------
1998-02-24 23:07:00-05
(1 row)

7.2 b
create table t (i int);
insert into t values(1);
select timestamp(date '1998-02-24', time '23:07') from t;
ERROR: parser: parse error at or near "date"

I'm asuming it changed in 7.2 because the 7.1 docs show the usage the
same as 7.0 (or the docs are wrong ;-) )

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Dave Smith (#1)
Re: 7.2b Timestamp

Dave Smith <dave@candata.com> writes:

Has some thing changed with the timestamp function since 7.0

The word "timestamp" is more reserved than it used to be, because
7.2 adds support for SQL92 timestamp precision options ---
timestamp(6) is now a type name, not a function call.

This means you need to write
select "timestamp"(date '1998-02-24', time '23:07');
to get the result you are after. Pain in the neck, I agree.

Actually, if the result you are after is timestamp with time zone,
you might try
select timestamptz(date '1998-02-24', time '23:07');
to avoid needing quotes.

regards, tom lane

#3Thomas Lockhart
lockhart@fourpalms.org
In reply to: Dave Smith (#1)
Re: 7.2b Timestamp

This means you need to write
select "timestamp"(date '1998-02-24', time '23:07');

Less painful might be to use a different syntax:

select (date '1998-02-24' + time '23:07');

should do what you need. Other places where you might be tempted to use
a function call to accomplish type conversion might be handled using the
CAST() function or operator.

- Thomas