Re: interval data type

From: Christophe Pettus <xof(at)thebuild(dot)com>
To: byrnejb(at)harte-lyne(dot)ca
Cc: pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: interval data type
Date: 2021-01-21 21:46:10
Message-ID: E36BE7BE-8C11-4625-9905-583CFC4906EF@thebuild.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

> On Jan 21, 2021, at 13:22, James B. Byrne <byrnejb(at)harte-lyne(dot)ca> wrote:
>
> What is the difference between interval(3)[] and simply interval(3)? Where in
> the documentation is the [] syntax discussed?

The [] syntax means an array. For example, float[] means an array of floating point numbers, so interval[] means an array of intervals.

> I got this to work with: ADD COLUMN lead_time interval day; and also with:
> ADD COLUMN lead_time interval(3); but I do not understand what these mean
> frankly. Does the form 'interval(3) imply a field value of SECOND?

No. An interval in PostgreSQL has multiple components: the year, month, and day intervals are all stored separately. For example, if months were always converted to seconds (or days), this wouldn't work properly:

xof=# SELECT '2021-01-01'::date + '1 month'::interval;
?column?
---------------------
2021-02-01 00:00:00
(1 row)

xof=# SELECT '2021-02-01'::date + '1 month'::interval;
?column?
---------------------
2021-03-01 00:00:00
(1 row)

The value in parenthesis is the number of decimal places to store fractional seconds:

xof=# select '0.33312312'::interval;
interval
-----------------
00:00:00.333123
(1 row)

xof=# select '0.33312312'::interval(3);
interval
--------------
00:00:00.333
(1 row)

> Are there other types of 'fields' that may be used with interval that are not
> given?

No, that list is exhaustive. The "fields" in the discussion of interval are not the same as the columns in a table; the documentation is talking about the components of an interval.

> I could not find a definition of 'sectored fields' in the manual. What is its
> meaning?

I don't believe that's a thing in PostgreSQL, and I didn't see the word "sectored" in the documentation. Can you quote where you saw it?

> Also I do not understand under what circumstance one would use the interval
> type in place of a simple integer.

Interval represents more than just a count of seconds or milliseconds, or some other unit; it also includes intervals that are not a fixed number of seconds, such as months and years.

--
-- Christophe Pettus
xof(at)thebuild(dot)com

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Keith Christian 2021-01-22 01:30:14 Customer unable to connect on port 5432, Postgres 10.7
Previous Message Thomas Kellerer 2021-01-21 21:30:33 Re: interval data type