Обсуждение: 7.2b Timestamp

Поиск
Список
Период
Сортировка

7.2b Timestamp

От
Dave Smith
Дата:
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 ;-) )





Re: 7.2b Timestamp

От
Tom Lane
Дата:
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

Re: 7.2b Timestamp

От
Thomas Lockhart
Дата:
> 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