@@ -2756,15 +2756,18 @@ P <optional> <replaceable>years</replaceable>-<replaceable>months</replaceable>-
2756
2756
</para>
2757
2757
2758
2758
<para>
2759
- In the verbose input format, and in some fields of the more compact
2760
- input formats, field values can have fractional parts; for example
2761
- <literal>'1.5 week'</literal> or <literal>'01:02:03.45'</literal>. Such input is
2762
- converted to the appropriate number of months, days, and seconds
2763
- for storage. When this would result in a fractional number of
2764
- months or days, the fraction is added to the lower-order fields
2765
- using the conversion factors 1 month = 30 days and 1 day = 24 hours.
2766
- For example, <literal>'1.5 month'</literal> becomes 1 month and 15 days.
2767
- Only seconds will ever be shown as fractional on output.
2759
+ Field values can have fractional parts: for example, <literal>'1.5
2760
+ weeks'</literal> or <literal>'01:02:03.45'</literal>. However,
2761
+ because interval internally stores only three integer units (months,
2762
+ days, microseconds), fractional units must be spilled to smaller
2763
+ units. Fractional parts of units greater than months is truncated to
2764
+ be an integer number of months, e.g. <literal>'1.5 years'</literal>
2765
+ becomes <literal>'1 year 6 mons'</literal>. Fractional parts of
2766
+ weeks and days are computed to be an integer number of days and
2767
+ microseconds, assuming 30 days per month and 24 hours per day, e.g.,
2768
+ <literal>'1.75 months'</literal> becomes <literal>1 mon 22 days
2769
+ 12:00:00</literal>. Only seconds will ever be shown as fractional
2770
+ on output.
2768
2771
</para>
2769
2772
2770
2773
<para>
@@ -2808,10 +2811,10 @@ P <optional> <replaceable>years</replaceable>-<replaceable>months</replaceable>-
2808
2811
2809
2812
<para>
2810
2813
Internally <type>interval</type> values are stored as months, days,
2811
- and seconds . This is done because the number of days in a month
2814
+ and microseconds . This is done because the number of days in a month
2812
2815
varies, and a day can have 23 or 25 hours if a daylight savings
2813
2816
time adjustment is involved. The months and days fields are integers
2814
- while the seconds field can store fractions . Because intervals are
2817
+ while the microseconds field can store fractional seconds . Because intervals are
2815
2818
usually created from constant strings or <type>timestamp</type> subtraction,
2816
2819
this storage method works well in most cases, but can cause unexpected
2817
2820
results:
0 commit comments