Re: TIMESTAMP

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: TIMESTAMP
Дата
Msg-id 2689933.1594668620@sss.pgh.pa.us
обсуждение исходный текст
Ответ на TIMESTAMP  (J Lumby <johnlumby@hotmail.com>)
Список pgsql-docs
J Lumby <johnlumby@hotmail.com> writes:
> I am curious about the syntactic nature of the expression :
> TIMESTAMP '2020-07-13'
> in this expression, is the token TIMESTAMP a function, typecast,  or other?
> I don't see a description of it as a function and there are no 
> parentheses in this example.

This construct is a typed constant, as described at
"4.1.2.7. Constants Of Other Types" on this page:

https://www.postgresql.org/docs/current/sql-syntax-lexical.html

It's a wart, frankly, and we wouldn't have it if the SQL standard
didn't insist.  Of the three syntaxes described by 4.1.2.7:

    type 'string'
    'string'::type
    CAST ( 'string' AS type )

the second and third actually work for casting any expression,
but the first one *only* works for a literal-string constant.
People are constantly burnt by that, for example by expecting
that they can write

    TIMESTAMP $1

You can plug a parameter symbol into the other two syntaxes,
but not that one.  On the whole I prefer using 'string'::type,
which is slightly more typing effort, but it generalizes correctly.

> I also tried
> FLOAT8 '7.3'
> and that is accepted as well.

IIRC, the SQL standard only defines this syntax for certain types
such as TIMESTAMP and INTERVAL; but Postgres allows it for any
type name.

            regards, tom lane



В списке pgsql-docs по дате отправления:

Предыдущее
От: J Lumby
Дата:
Сообщение: TIMESTAMP
Следующее
От: Bruce Momjian
Дата:
Сообщение: ALTER SYSTEM between upgrades