Обсуждение: Date/Time parsing of ISO 8601 timestamps with commas

Поиск
Список
Период
Сортировка

Date/Time parsing of ISO 8601 timestamps with commas

От
Zane Duffield
Дата:
I noticed today that PostgreSQL doesn't support parsing ISO 8601 timestamps that use a comma as the decimal separator.

The section of the standard that describes this is 4.2.2.4
the decimal fraction shall be divided from the integer part by the decimal sign specified in ISO 31-0, i.e. the comma [,] or full stop [.]. Of these, the comma is the preferred sign

I noticed this issue because a script I wrote used the unix `date` command to generate a timestamp (later fed into PostgreSQL)
$ date --iso-8601=ns
2025-10-10T10:38:59,386724473+11:00

I read over the documentation for Date/Time types: https://www.postgresql.org/docs/18/datatype-datetime.html
Date and time input is accepted in almost any reasonable format, including ISO 8601

but there is no clarification on this page that the comma is not supported as the decimal separator.

Thanks,
Zane

Re: Date/Time parsing of ISO 8601 timestamps with commas

От
Nathan Bossart
Дата:
On Fri, Oct 10, 2025 at 10:43:04AM +1100, Zane Duffield wrote:
> I noticed today that PostgreSQL doesn't support parsing ISO 8601 timestamps
> that use a comma as the decimal separator.

I found various threads about this in the archives, including this one:

    https://postgr.es/m/flat/152271186941.1442.12179299369295226185%40wrigleys.postgresql.org

-- 
nathan



Re: Date/Time parsing of ISO 8601 timestamps with commas

От
"David G. Johnston"
Дата:
On Fri, Oct 10, 2025 at 4:09 PM Nathan Bossart <nathandbossart@gmail.com> wrote:
On Fri, Oct 10, 2025 at 10:43:04AM +1100, Zane Duffield wrote:
> I noticed today that PostgreSQL doesn't support parsing ISO 8601 timestamps
> that use a comma as the decimal separator.

I found various threads about this in the archives, including this one:

        https://postgr.es/m/flat/152271186941.1442.12179299369295226185%40wrigleys.postgresql.org


If there are indeed various threads we might want to update the documentation to make it clear that we say "almost" because we don't correctly interpret formats that have substituted a comma for a full-stop. (And maybe other exceptions.)

Or, I suppose, Appendix B.1 step 1 should include a 5th note (or maybe add a step 0): "If the token is a comma it is replaced by a space".

David J.

Re: Date/Time parsing of ISO 8601 timestamps with commas

От
Zane Duffield
Дата:
That linked thread covers the topic quite well. I didn't find it because the search function on the website only goes back 1 year.

I think adding some note to the documentation would be appropriate.


From: David G. Johnston <david.g.johnston@gmail.com>
Sent: Saturday, October 11, 2025 7:30:01 AM
To: Nathan Bossart <nathandbossart@gmail.com>
Cc: Zane Duffield <duffieldzane@gmail.com>; pgsql-bugs@lists.postgresql.org <pgsql-bugs@lists.postgresql.org>
Subject: Re: Date/Time parsing of ISO 8601 timestamps with commas
 
On Fri, Oct 10, 2025 at 4:09 PM Nathan Bossart <nathandbossart@gmail.com> wrote:
On Fri, Oct 10, 2025 at 10:43:04AM +1100, Zane Duffield wrote:
> I noticed today that PostgreSQL doesn't support parsing ISO 8601 timestamps
> that use a comma as the decimal separator.

I found various threads about this in the archives, including this one:

        https://postgr.es/m/flat/152271186941.1442.12179299369295226185%40wrigleys.postgresql.org


If there are indeed various threads we might want to update the documentation to make it clear that we say "almost" because we don't correctly interpret formats that have substituted a comma for a full-stop. (And maybe other exceptions.)

Or, I suppose, Appendix B.1 step 1 should include a 5th note (or maybe add a step 0): "If the token is a comma it is replaced by a space".

David J.