Re: converting between infinity timestamp and float8 (epoch)

Поиск
Список
Период
Сортировка
От Phil Sorber
Тема Re: converting between infinity timestamp and float8 (epoch)
Дата
Msg-id CADAkt-jRYHGFjLb1NdU9CbNJvVPUbb2JQ+mTuxO+KegLDO3K+g@mail.gmail.com
обсуждение исходный текст
Ответ на converting between infinity timestamp and float8 (epoch)  (Phil Sorber <phil@omniti.com>)
Ответы Re: converting between infinity timestamp and float8 (epoch)  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
On Tue, Dec 27, 2011 at 10:41 AM, Phil Sorber <phil@omniti.com> wrote:
> So first off some ground work:
>
> postgres=3D# select 'infinity'::timestamp;
> =A0timestamp
> -----------
> =A0infinity
> (1 row)
>
> postgres=3D# select 'infinity'::float8;
> =A0float8
> ----------
> =A0Infinity
> (1 row)
>
> Establishing that we do in fact have an infinity value for both the
> timestamp type and the double precision type.
>
> If I try to convert between them:
>
> postgres=3D# select to_timestamp('infinity'::float8);
> ERROR: =A0timestamp out of range
> CONTEXT: =A0SQL function "to_timestamp" statement 1
>
> Ok, so that didn't work. Maybe there is something in the SQL standard
> stating that this should not be possible? At least it reports an
> error.
>
> However, if I try:
>
> postgres=3D# select extract(epoch from 'infinity'::timestamp);
> =A0date_part
> -----------
> =A0 =A0 =A0 =A0 0
> (1 row)
>
> This seems busted. Even if we were to consider 0 to be a special
> "error value" it would lead to things like this:
>
> postgres=3D# select to_timestamp(extract(epoch from 'infinity'::timestamp=
));
> =A0 =A0 =A0to_timestamp
> ------------------------
> =A01969-12-31 19:00:00-05
> (1 row)
>
> So I think the second form (extract) should return an error, or better
> yet, they should both do the intuitive thing that is to return
> 'infinity' of the appropriate type.
>
> Thoughts?

My search foo failed me. Someone just pointed me to a similar
conversation from some months ago:
http://archives.postgresql.org/pgsql-hackers/2011-07/msg00677.php

I would propose that since we can't know the hour or minute of
infinity that we should return null for those. I think NaN would be
wrong because it is a real number, it's just unknown. If we can just
pass infinity through the function, I think we should.

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

Предыдущее
От: Phil Sorber
Дата:
Сообщение: converting between infinity timestamp and float8 (epoch)
Следующее
От: Tom Lane
Дата:
Сообщение: Re: BUG #6360: with hold cursor, cause function executed twice and wrong results