]> granicus.if.org Git - postgresql/commitdiff
Add some documentation about handling of fractions in interval input.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 9 Nov 2008 17:09:48 +0000 (17:09 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 9 Nov 2008 17:09:48 +0000 (17:09 +0000)
(It's always worked like this, but we never documented it before.)

doc/src/sgml/datatype.sgml

index 10da67ef5c61ea3dee95228b444abf6d87128517..d26fdc5fde61680e47a79cee3513c450fd301a22 100644 (file)
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/datatype.sgml,v 1.232 2008/11/09 00:28:34 tgl Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/datatype.sgml,v 1.233 2008/11/09 17:09:48 tgl Exp $ -->
 
  <chapter id="datatype">
   <title id="datatype-title">Data Types</title>
@@ -2413,13 +2413,26 @@ January 8 04:05:06 1999 PST
      Internally <type>interval</> values are stored as months, days,
      and seconds. This is done because the number of days in a month
      varies, and a day can have 23 or 25 hours if a daylight savings
-     time adjustment is involved. Because intervals are usually created
-     from constant strings or <type>timestamp</> subtraction, this
-     storage method works well in most cases. Functions
+     time adjustment is involved.  The months and days fields are integers
+     while the seconds field can store fractions.  Because intervals are
+     usually created from constant strings or <type>timestamp</> subtraction,
+     this storage method works well in most cases. Functions
      <function>justify_days</> and <function>justify_hours</> are
      available for adjusting days and hours that overflow their normal
      ranges.
     </para>
+
+    <para>
+     In the verbose input format, and in some fields of the more compact
+     input formats, field values can have fractional parts; for example
+     <literal>'1.5 week'</> or <literal>'01:02:03.45'</>.  Such input is
+     converted to the appropriate number of months, days, and seconds
+     for storage.  When this would result in a fractional number of
+     months or days, the fraction is added to the lower-order fields
+     using the conversion factors 1 month = 30 days and 1 day = 24 hours.
+     For example, <literal>'1.5 month'</> becomes 1 month and 15 days.
+     Only seconds will ever be shown as fractional on output.
+    </para>
    </sect2>
 
    <sect2 id="datatype-interval-output">