]> granicus.if.org Git - postgresql/commitdiff
On second thought, explain why date_trunc("week") on interval values is
authorBruce Momjian <bruce@momjian.us>
Wed, 15 Aug 2012 20:48:05 +0000 (16:48 -0400)
committerBruce Momjian <bruce@momjian.us>
Wed, 15 Aug 2012 20:48:05 +0000 (16:48 -0400)
not supported in the error message, rather than the docs.

doc/src/sgml/func.sgml
src/backend/utils/adt/timestamp.c

index 5d0c71a8b9f78584654ea8ced79e49681d3c80e8..d5ad4718b156b7bfce26f5047d62d7e4cce085e5 100644 (file)
@@ -7050,11 +7050,6 @@ date_trunc('<replaceable>field</replaceable>', <replaceable>source</replaceable>
     </simplelist>
    </para>
 
-   <para>
-    <literal>week</literal> is not supported for <type>interval</>
-    values because months usually have fractional weeks.
-   </para>
-
    <para>
     Examples:
 <screen>
index 8593b6b47f4d26710f36c8dc625e9179defb38cf..2adc178de4fbe1e14d010dc6f00fb07f9a6780b4 100644 (file)
@@ -3710,10 +3710,17 @@ interval_trunc(PG_FUNCTION_ARGS)
                                        break;
 
                                default:
-                                       ereport(ERROR,
-                                                       (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                                                        errmsg("interval units \"%s\" not supported",
-                                                                       lowunits)));
+                                       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)