On Thu, Aug 25, 2011 at 07:05:34PM +0000, Noah Hamerslough wrote: > > The following bug has been logged online: > > Bug reference: 6178 > Logged by: Noah Hamerslough > Email address: n...@pcc.com > PostgreSQL version: 8.4 > Operating system: Windows Vista > Description: date_trunc : interval units "week" not supported > contradicts documentation > Details: > > http://www.postgresql.org/docs/8.4/static/functions-datetime.html#FUNCTIONS- > DATETIME-TRUNC > > The documentation for date_trunc('field', source) lists 'week' in the as a > valid value for 'field' However, if the source is an interval, 'week' is not > supported. > > select date_trunc('week', '1 month 15 days'::interval); > > ERROR: interval units "week" not supported > SQL state: 0A000 > > Either 'week' should be supported or the documentation should be updated to > reflect that it is not.
Turns out the reason we don't support this is because there are usually a fractional number of weeks in a month, so there is no good way to do this for intervals. I have applied the attached patch to PG 9.3 which will explain why this is not supported. I saw this as better than a documentation mention. -- Bruce Momjian <br...@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + It's impossible for everything to be true. +
diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c new file mode 100644 index 8593b6b..2adc178 *** a/src/backend/utils/adt/timestamp.c --- b/src/backend/utils/adt/timestamp.c *************** interval_trunc(PG_FUNCTION_ARGS) *** 3710,3719 **** break; default: ! ereport(ERROR, ! (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), ! errmsg("interval units \"%s\" not supported", ! lowunits))); } if (tm2interval(tm, fsec, result) != 0) --- 3710,3726 ---- break; default: ! if (val == DTK_WEEK) ! ereport(ERROR, ! (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), ! errmsg("interval units \"%s\" not supported " ! "because months usually have fractional weeks", ! lowunits))); ! else ! ereport(ERROR, ! (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), ! errmsg("interval units \"%s\" not supported", ! lowunits))); } if (tm2interval(tm, fsec, result) != 0)
-- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs