Обсуждение: type casting reference?

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

type casting reference?

От
stig erikson
Дата:
hi.
i need to cast from timestamp to seconds (in the form of integer).

i have a table with a column:
expiretime timestamp

i have tried the following, it gives errors as below:
SELECT expiretime::float4 AS timeleft FROM table WHERE something='1234';
ERROR:  cannot cast type timestamp without time zone to real

SELECT expiretime::text::float4 AS timeleft FROM table WHERE something='1234';
ERROR:  invalid input syntax for type real: "2005-06-12 21:21:24.368082"


postgresql 7.4.1 (i know, old)

so, my question is simply, where in the docs can i find how i should perform the
cast?
it would help a lot if there was a table showing which types can be cased into
which, and possibly an example or two for situations like this, casting from
timestamp (to timestamp worked right away).

/stig

Re: type casting reference? SOLVED

От
stig erikson
Дата:
stig erikson wrote:
> hi.
> i need to cast from timestamp to seconds (in the form of integer).
>
> i have a table with a column:
> expiretime timestamp
>
> i have tried the following, it gives errors as below:
> SELECT expiretime::float4 AS timeleft FROM table WHERE something='1234';
> ERROR:  cannot cast type timestamp without time zone to real
>
> SELECT expiretime::text::float4 AS timeleft FROM table WHERE
> something='1234';
> ERROR:  invalid input syntax for type real: "2005-06-12 21:21:24.368082"
>
>
> postgresql 7.4.1 (i know, old)
>
> so, my question is simply, where in the docs can i find how i should
> perform the cast?
> it would help a lot if there was a table showing which types can be
> cased into which, and possibly an example or two for situations like
> this, casting from timestamp (to timestamp worked right away).
>
> /stig

solved my problem this way:

UPDATE table
SET expiretime= cast( ('now'::text)::timestamp+'30 minutes'::interval AS timestamp)
WHERE sessionID='0';

Re: type casting reference?

От
Michael Glaesemann
Дата:
On Jun 13, 2005, at 4:39 AM, stig erikson wrote:

> hi.
> i need to cast from timestamp to seconds (in the form of integer).
>
> i have a table with a column:
> expiretime timestamp
>
> i have tried the following, it gives errors as below:
> SELECT expiretime::float4 AS timeleft FROM table WHERE
> something='1234';
> ERROR:  cannot cast type timestamp without time zone to real
>
> SELECT expiretime::text::float4 AS timeleft FROM table WHERE
> something='1234';
> ERROR:  invalid input syntax for type real: "2005-06-12
> 21:21:24.368082"

Are you looking for the timestamp expressed as seconds from the Unix
epoch? If so, look at extract(epoch from expiretime).

http://www.postgresql.org/docs/7.4/interactive/functions-
datetime.html#FUNCTIONS-DATETIME-EXTRACT


Michael Glaesemann
grzm myrealbox com