aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/timestamp.c
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2007-02-19 17:41:39 +0000
committerBruce Momjian <bruce@momjian.us>2007-02-19 17:41:39 +0000
commit3e803f72732f591a7913f5be212012ea1193705c (patch)
tree5b8447ef3148a5397b18ae10cfe741d389db56d6 /src/backend/utils/adt/timestamp.c
parent27d6ee04b817247bc5e07ee1bde857e60139a658 (diff)
downloadpostgresql-3e803f72732f591a7913f5be212012ea1193705c.tar.gz
postgresql-3e803f72732f591a7913f5be212012ea1193705c.zip
Add "isodow" option to EXTRACT() and date_part() where Sunday = 7.
Diffstat (limited to 'src/backend/utils/adt/timestamp.c')
-rw-r--r--src/backend/utils/adt/timestamp.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c
index 7632e1b8961..a842c1b02cf 100644
--- a/src/backend/utils/adt/timestamp.c
+++ b/src/backend/utils/adt/timestamp.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/adt/timestamp.c,v 1.172 2007/02/16 03:39:45 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/timestamp.c,v 1.173 2007/02/19 17:41:39 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -4112,11 +4112,14 @@ timestamp_part(PG_FUNCTION_ARGS)
break;
}
case DTK_DOW:
+ case DTK_ISODOW:
if (timestamp2tm(timestamp, NULL, tm, &fsec, NULL, NULL) != 0)
ereport(ERROR,
(errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
errmsg("timestamp out of range")));
result = j2day(date2j(tm->tm_year, tm->tm_mon, tm->tm_mday));
+ if (val == DTK_ISODOW && result == 0)
+ result = 7;
break;
case DTK_DOY:
@@ -4322,11 +4325,14 @@ timestamptz_part(PG_FUNCTION_ARGS)
break;
case DTK_DOW:
+ case DTK_ISODOW:
if (timestamp2tm(timestamp, &tz, tm, &fsec, &tzn, NULL) != 0)
ereport(ERROR,
(errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
errmsg("timestamp out of range")));
result = j2day(date2j(tm->tm_year, tm->tm_mon, tm->tm_mday));
+ if (val == DTK_ISODOW && result == 0)
+ result = 7;
break;
case DTK_DOY: