Re: BUG #16169: Default time output for 24:00 is 00:00

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: BUG #16169: Default time output for 24:00 is 00:00
Дата
Msg-id 6897.1576604975@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: BUG #16169: Default time output for 24:00 is 00:00  (Alvaro Herrera <alvherre@2ndquadrant.com>)
Ответы Re: BUG #16169: Default time output for 24:00 is 00:00  (Francisco Olarte <folarte@peoplecall.com>)
Re: BUG #16169: Default time output for 24:00 is 00:00  (Alvaro Herrera <alvherre@2ndquadrant.com>)
Список pgsql-bugs
Alvaro Herrera <alvherre@2ndquadrant.com> writes:
> On 2019-Dec-17, PG Bug reporting form wrote:
>> The output correctly follows what the manual says (
>> https://www.postgresql.org/docs/12/datatype-datetime.html ). Although the
>> doc is correct, I have not been able to find any explicit mention of this
>> behaviour. An explicit mention may be useful to avoid confusion, as one
>> normally expects to be able to reconstruct inserted data from select results
>> ( changing behaviour may hurt existing dependencies on current one ), and
>> 2400 may be a common value when using time fields for things like "opening
>> hours 16:00 - 24:00".

> Do you have a concrete proposal?  I think 8.5.1.2 could have a new para
> saying "note that 24:00 is displayed as 00:00 because it really is the
> start of the next day, and there's no way to distinguish that from 00:00
> of the current day."  Or maybe it should just state that using a time
> column without an accompanying date column is a lost cause.

8.5.1.2 should say no such thing, because the complaint as stated is
wrong.

regression=# select '24:00'::time;
   time
----------
 24:00:00
(1 row)

The referenced sqlfiddle example, which for our archives' sake is

select t, extract(hours from t), extract(epoch from t), t-'00:00'::time from (values('00:00'::time), ('24:00'::time))
asv(t); 

gives this for me:

    t     | date_part | date_part | ?column?
----------+-----------+-----------+----------
 00:00:00 |         0 |         0 | 00:00:00
 24:00:00 |        24 |     86400 | 24:00:00
(2 rows)

which doesn't seem particularly surprising either.

However ... when you run it on sqlfiddle, that shows the 't' column as
00:00:00 in both cases.  It also shows the fourth column in a format
that doesn't match any of our intervalstyle formats.

So there is something weird about sqlfiddle's "Postgres".  I wonder
whether it is actually EDB with the oracle compatibility hacks
turned on.  I tried "select version()" but that didn't show anything
out of the ordinary.

In any case, I don't think there is anything that needs changing
about our docs.  Some questions could be raised with the sqlfiddle
maintainers, perhaps.

            regards, tom lane



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

Предыдущее
От: Alvaro Herrera
Дата:
Сообщение: Re: BUG #16169: Default time output for 24:00 is 00:00
Следующее
От: Tomas Vondra
Дата:
Сообщение: Re: BUG #16169: Default time output for 24:00 is 00:00