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

Reply via email to