1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-03 20:02:46 +03:00

In my mind there were two categories of open issues

a) ones that are 100% backward (such as the comment about
     outputting this format)
and
  b) ones that aren't (such as deprecating the current
     postgresql shorthand of
         '1Y1M'::interval = 1 year 1 minute
     in favor of the ISO-8601
         'P1Y1M'::interval = 1 year 1 month.

Attached is a patch that addressed all the discussed issues that
did not break backward compatability, including the ability to
output ISO-8601 compliant intervals by setting datestyle to
iso8601basic.

Interval values can now be written as  ISO 8601 time intervals, using
the "Format with time-unit designators". This format always starts with
the character 'P', followed  by a string of values followed
by single character time-unit designators. A 'T' separates the date and
time parts of the interval.

Ron Mayer
This commit is contained in:
Bruce Momjian
2003-12-20 15:32:55 +00:00
parent 7be614a087
commit 54c8e821b8
7 changed files with 578 additions and 7 deletions

View File

@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/commands/variable.c,v 1.90 2003/11/29 19:51:48 pgsql Exp $
* $PostgreSQL: pgsql/src/backend/commands/variable.c,v 1.91 2003/12/20 15:32:54 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@ -82,7 +82,12 @@ assign_datestyle(const char *value, bool doit, bool interactive)
/* Ugh. Somebody ought to write a table driven version -- mjl */
if (strcasecmp(tok, "ISO") == 0)
if (strcasecmp(tok, "ISO8601BASIC") == 0)
{
newDateStyle = USE_ISO8601BASIC_DATES;
scnt++;
}
else if (strcasecmp(tok, "ISO") == 0)
{
newDateStyle = USE_ISO_DATES;
scnt++;
@ -198,6 +203,9 @@ assign_datestyle(const char *value, bool doit, bool interactive)
case USE_ISO_DATES:
strcpy(result, "ISO");
break;
case USE_ISO8601BASIC_DATES:
strcpy(result, "ISO8601BASIC");
break;
case USE_SQL_DATES:
strcpy(result, "SQL");
break;