Re: BUG #18348: Inconsistency with EXTRACT([field] from INTERVAL);
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: jian he <jian.universality@gmail.com>
Cc: Francisco Olarte <folarte@peoplecall.com>,
Michael Bondarenko <work.michael.2956@gmail.com>,
pgsql-bugs@lists.postgresql.org, dgrowleyml@gmail.com,
Peter Eisentraut <peter.eisentraut@enterprisedb.com>
Date: 2024-02-20T20:56:04Z
Lists: pgsql-bugs, pgsql-hackers
Attachments
- interval-week-and-quarter-fixes.patch (text/x-diff) patch
I wrote: > jian he <jian.universality@gmail.com> writes: >> On Sun, Feb 18, 2024 at 2:14 AM Tom Lane <tgl@sss.pgh.pa.us> wrote: >>> (Parenthetically, one case that perhaps is surprising is >>> ERROR: unit "week" not supported for type interval >>> Why not just return the day field divided by 7?) >> seems pretty simple? > Hm, maybe, but does this behave desirably for zero or negative days? >> So in section 9.9.1. EXTRACT, date_part >> we may need to document extract(quarter from interval) case. >> intervals can be negative, which will make the issue more complicated. >> except the "quarter" field , EXTRACT other fields from intervals, the >> output seems sane. > Yeah, I see what you mean: the output for negative month counts is > very bizarre, whereas other fields seem to all produce the negative > of what they'd produce for the absolute value of the interval. > We could either try to fix that or decide that rejecting "quarter" > for intervals is the saner answer. After fooling with these cases for a little I'm inclined to think we should do it as attached (no test or docs changes yet). regards, tom lane
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix extraction of week and quarter fields from intervals.
- 6be39d77a70d 18.0 landed
-
Doc: improve explanation of type interval, especially extract().
- fcd210d496da 17.0 landed
- ebf52e9b7532 14.12 landed
- eb1d008a7a18 13.15 landed
- 6d03e8109250 15.7 landed
- 3ad319b8cad4 16.3 landed