Subject: INTERVAL output format for iso_8601 is without dashes

From: PG Doc comments form <[email-masked]>
Date: Tue, 10 Mar 2026 14:10:47 +0000

The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/18/datatype-datetime.html
Description:

https://www.postgresql.org/docs/current/datatype-datetime.html#DATATYPE-INTERVAL-OUTPUT

The output format for mixed Interval in style specification iso_8601 is
documented incorrectly.

The documentation says `P-1Y-2M3D​T-4H-5M-6S` while in reality there are no
dashes: `P1Y2M3D​T4H5M6S`

---

From: Tom Lane <[email-masked]>
Date: Sun, 15 Mar 2026 16:14:23 -0400

> dashes: `P1Y2M3D​T4H5M6S`

It looks correct to me:

regression=# set intervalstyle TO iso_8601;
SET
regression=# select '-1 year -2 mons +3 days -04:05:06'::interval;
      interval       
---------------------
 P-1Y-2M3DT-4H-5M-6S
(1 row)

			regards, tom lane

---

From: Benjamin Kröger <[email-masked]>
Date: Mon, 16 Mar 2026 12:39:32 +0100

> regression=# select '-1 year -2 mons +3 days -04:05:06'::interval;
well, judging vom the columns `Year-Month Interval` and `Day-Time 
Interval` I didn't expect the input for the column `Mixed Interval` to 
have negative dimensions (since the other two are positive dimensions 
only). granted, I missed the positive three days :)

It might help to see the input values that led to the documented output 
values. If you look e.g. at the mixed interval output for style 
`postgres_verbose`, all dimensions are signed exactly opposite to the 
`iso_8601` style.

---

From: Tom Lane <[email-masked]>
Date: Mon, 16 Mar 2026 09:44:23 -0400

> `postgres_verbose`, all dimensions are signed exactly opposite to the 

I believe all the entries in each column of that table represent the
same value.  The reason for the sign difference in postgres_verbose
is that it uses "ago" to indicate an overall sign inversion.

			regards, tom lane