Commit b6e94b82 authored by Bruce Momjian's avatar Bruce Momjian

doc: show how interval's 3 unit buckets behave using EXTRACT()

This clarifies when justify_days() and justify_hours() are useful.
Paragraph moved too.

Reported-by: vodevsh@gmail.com

Discussion: https://postgr.es/m/152698651482.26744.15456677499485530703@wrigleys.postgresql.org

Backpatch-through: 9.3
parent 2d502b81
...@@ -2670,19 +2670,6 @@ P <optional> <replaceable>years</replaceable>-<replaceable>months</replaceable>- ...@@ -2670,19 +2670,6 @@ P <optional> <replaceable>years</replaceable>-<replaceable>months</replaceable>-
to each field if any field is negative. to each field if any field is negative.
</para> </para>
<para>
Internally <type>interval</type> 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. 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</type> subtraction,
this storage method works well in most cases. Functions
<function>justify_days</function> and <function>justify_hours</function> are
available for adjusting days and hours that overflow their normal
ranges.
</para>
<para> <para>
In the verbose input format, and in some fields of the more compact In the verbose input format, and in some fields of the more compact
input formats, field values can have fractional parts; for example input formats, field values can have fractional parts; for example
...@@ -2734,6 +2721,33 @@ P <optional> <replaceable>years</replaceable>-<replaceable>months</replaceable>- ...@@ -2734,6 +2721,33 @@ P <optional> <replaceable>years</replaceable>-<replaceable>months</replaceable>-
</tgroup> </tgroup>
</table> </table>
<para>
Internally <type>interval</type> 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. 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</type> subtraction,
this storage method works well in most cases, but can cause unexpected
results:
<programlisting>
SELECT EXTRACT(hours from '80 minutes'::interval);
date_part
-----------
1
SELECT EXTRACT(days from '80 hours'::interval);
date_part
-----------
0
</programlisting>
Functions <function>justify_days</function> and
<function>justify_hours</function> are available for adjusting days
and hours that overflow their normal ranges.
</para>
</sect2> </sect2>
<sect2 id="datatype-interval-output"> <sect2 id="datatype-interval-output">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment