From: Tom Lane <tgl@sss.pgh.pa.us>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: david.perez.ingeniero@gmail.com
Cc: pgsql-bugs@lists.postgresql.org
Subject: Re: BUG #18470: Time literal accepted in Postgres 15 and below, not accepted in Postgres 16
Date: Fri, 17 May 2024 14:01:51 -0400
Message-ID: <2473625.1715968911@sss.pgh.pa.us> (raw)
In-Reply-To: <2393945.1715956655@sss.pgh.pa.us>
References: <202405171346.virffgus6cjg@alvherre.pgsql>
<2393945.1715956655@sss.pgh.pa.us>
I wrote:
> I'm not sure whether that wikipedia page should be taken
> as authoritative, but if we can convince ourselves that
> 'T14:00:00' really is a thing per 8601, then yeah we should
> undo that part.
Given the lack of ready availability of 8601 itself, perhaps
we should assume that everyone's going to believe wikipedia.
In any case, what it says is pretty straightforward:
As of ISO 8601-1:2019, the basic format is T[hh][mm][ss] and the
extended format is T[hh]:[mm]:[ss]. Earlier versions omitted the T
(representing time) in both formats.
Either the seconds, or the minutes and seconds, may be omitted
from the basic or extended time formats for greater brevity but
decreased precision; the resulting reduced precision time formats
are:
T[hh][mm] in basic format or T[hh]:[mm] in extended format, when
seconds are omitted.
T[hh], when both seconds and minutes are omitted.
We previously accepted all of these except T[hh]. I'm inclined
to continue to reject that, even if it's nominally standards
compliant, because it seems way too likely to be a mistake.
Interestingly, the code does still take the "basic" (colon-free)
forms:
regression=# select time 'T1347';
time
----------
13:47:00
(1 row)
regression=# select time 'T134712';
time
----------
13:47:12
(1 row)
regression=# select time 'T134712.4';
time
------------
13:47:12.4
(1 row)
So at this point, yeah that's a bug we should fix.
I'll look into it later if nobody beats me to it.
regards, tom lane
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-bugs@postgresql.org
Cc: tgl@sss.pgh.pa.us, alvherre@alvh.no-ip.org, david.perez.ingeniero@gmail.com, pgsql-bugs@lists.postgresql.org
Subject: Re: BUG #18470: Time literal accepted in Postgres 15 and below, not accepted in Postgres 16
In-Reply-To: <2473625.1715968911@sss.pgh.pa.us>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox