aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2010-03-03 22:28:42 +0000
committerBruce Momjian <bruce@momjian.us>2010-03-03 22:28:42 +0000
commitea066f87c3e98166639d9f08a15d5b551f62d3ed (patch)
tree3596f967f274a3f8fba06ffe85d1f1803a0f2f40
parent61d75116a72329ba50cb9e89379eaf5ceab02419 (diff)
downloadpostgresql-ea066f87c3e98166639d9f08a15d5b551f62d3ed.tar.gz
postgresql-ea066f87c3e98166639d9f08a15d5b551f62d3ed.zip
Document that "Q" is ignored by to_date and to_timestamp. Add C comment
about the behavior. Document that quotes in to_date, to_timestamp, to_number skip input characters.
-rw-r--r--doc/src/sgml/func.sgml9
-rw-r--r--src/backend/utils/adt/formatting.c10
2 files changed, 12 insertions, 7 deletions
diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml
index 689cd34e93b..38350c1bd35 100644
--- a/doc/src/sgml/func.sgml
+++ b/doc/src/sgml/func.sgml
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.506 2010/02/23 16:14:25 momjian Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.507 2010/03/03 22:28:42 momjian Exp $ -->
<chapter id="functions">
<title>Functions and Operators</title>
@@ -5089,7 +5089,7 @@ SELECT SUBSTRING('XY1234Z', 'Y*?([0-9]{1,3})');
</row>
<row>
<entry><literal>Q</literal></entry>
- <entry>quarter</entry>
+ <entry>quarter (ignored by <function>to_date</> and <function>to_timestamp</>)</entry>
</row>
<row>
<entry><literal>RM</literal></entry>
@@ -5209,7 +5209,10 @@ SELECT SUBSTRING('XY1234Z', 'Y*?([0-9]{1,3})');
even if it contains pattern key words. For example, in
<literal>'"Hello Year "YYYY'</literal>, the <literal>YYYY</literal>
will be replaced by the year data, but the single <literal>Y</literal> in <literal>Year</literal>
- will not be.
+ will not be. In <function>to_date</>, <function>to_number</>,
+ and <function>to_timestamp</>, double-quoted strings skip the number of
+ input characters contained in the string, e.g. <literal>"XX"</>
+ skips two input characters.
</para>
</listitem>
diff --git a/src/backend/utils/adt/formatting.c b/src/backend/utils/adt/formatting.c
index e7e82a1b148..cc4f8137db0 100644
--- a/src/backend/utils/adt/formatting.c
+++ b/src/backend/utils/adt/formatting.c
@@ -1,7 +1,7 @@
/* -----------------------------------------------------------------------
* formatting.c
*
- * $PostgreSQL: pgsql/src/backend/utils/adt/formatting.c,v 1.168 2010/02/26 02:01:08 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/formatting.c,v 1.169 2010/03/03 22:28:42 momjian Exp $
*
*
* Portions Copyright (c) 1999-2010, PostgreSQL Global Development Group
@@ -2671,10 +2671,12 @@ DCH_from_char(FormatNode *node, char *in, TmFromChar *out)
s += SKIP_THth(n->suffix);
break;
case DCH_Q:
-
/*
- * We ignore Q when converting to date because it is not
- * normative.
+ * We ignore 'Q' when converting to date because it is
+ * unclear which date in the quarter to use, and some
+ * people specify both quarter and month, so if it was
+ * honored it might conflict with the supplied month.
+ * That is also why we don't throw an error.
*
* We still parse the source string for an integer, but it
* isn't stored anywhere in 'out'.