Argument 'week' not supported in date_trunc function with intervals

Started by PG Bug reporting formover 6 years ago2 messagesdocs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/12/functions-datetime.html
Description:

In the documentation of the date_trunc function (9.9.2), the first argument
(field) cannot be 'week' if the second argument (source) is an interval:

csauer=# SELECT DATE_TRUNC('week', INTERVAL '7 days');

ERROR: interval units "week" not supported because months usually have
fractional weeks
csauer=# SELECT DATE_TRUNC('week', INTERVAL '1 week');

ERROR: interval units "week" not supported because months usually have
fractional weeks

The documentation should state that explicitly.

I also think the error message could be improved, because in the cases above
there are no months involved and the result should be 1.

#2Bruce Momjian
bruce@momjian.us
In reply to: PG Bug reporting form (#1)
Re: Argument 'week' not supported in date_trunc function with intervals

On Fri, Jan 3, 2020 at 12:31:27PM +0000, PG Doc comments form wrote:

The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/12/functions-datetime.html
Description:

In the documentation of the date_trunc function (9.9.2), the first argument
(field) cannot be 'week' if the second argument (source) is an interval:

csauer=# SELECT DATE_TRUNC('week', INTERVAL '7 days');

ERROR: interval units "week" not supported because months usually have
fractional weeks
csauer=# SELECT DATE_TRUNC('week', INTERVAL '1 week');

ERROR: interval units "week" not supported because months usually have
fractional weeks

The documentation should state that explicitly.

I also think the error message could be improved, because in the cases above
there are no months involved and the result should be 1.

Uh, we could modify the code so that we allow SELECT DATE_TRUNC('week',
INTERVAL '') to work if there is no month component, since interval is
made up of months, days, and time. However, this would mean the
function would work with some interval values, and not others. Is that
an improvement?

--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ As you are, so once was I.  As I am, so you will be. +
+                      Ancient Roman grave inscription +