PostgreSQL で日付に日数を追加する

Shihab Sikder 2023年6月20日
  1. Date タイプのフィールドを持つテーブルを作成する
  2. date で日数を追加
PostgreSQL で日付に日数を追加する

Postgres には、date 情報をさまざまなスタイルで保存するために使用できる date 型のデータがあります。 Postgres は、特定の単位で date または時間を増減することもできます。

このチュートリアルでは、PostgreSQL を使用しているときに date に何日も追加する方法を説明します。

Date タイプのフィールドを持つテーブルを作成する

さまざまなフィールド/列を含む project テーブルがあります。 このテーブルには作成日 date があり、date を追加して表示したい整数値を持つ別の列があることに注意してください。

create table project (
  id INT,
  Project VARCHAR(50),
  Created DATE,
  Interval INT
);

insert into project (id, Project, Created, Interval)
values
( 1, 'Heron Therapeutics, Inc.', '2021-10-23', 9),
( 2, 'CryoPort, Inc.', '2022-05-07', 5),
( 4, 'Turtle Beach Corporation', '2022-07-27', 10),
( 5, 'Banco Santander Chile', '2022-02-08', 6),
( 6, 'BLACKROCK INTERNATIONAL, LTD.', '2022-07-28', 10),
( 7, 'Sohu.com Inc.', '2021-10-14', 12),
( 8, 'Northeast Bancorp', '2022-07-20', 6);

select * from project;

出力:

 id |            project            |  created   | interval
----+-------------------------------+------------+----------
  1 | Heron Therapeutics, Inc.      | 2021-10-23 |        9
  2 | CryoPort, Inc.                | 2022-05-07 |        5
  4 | Turtle Beach Corporation      | 2022-07-27 |       10
  5 | Banco Santander Chile         | 2022-02-08 |        6
  6 | BLACKROCK INTERNATIONAL, LTD. | 2022-07-28 |       10
  7 | Sohu.com Inc.                 | 2021-10-14 |       12
  8 | Northeast Bancorp             | 2022-07-20 |        6
(7 rows)

date で日数を追加

クエリ内で interval メソッドを使用してクレーム date を取得できます。 そのため、created 列に interval を追加して出力します。 クエリは次のようになります。

select id,
       project,
       created,
       interval,
       date(created + interval '1 day' * interval) as deadline
from project;

出力は次のとおりです。

 id |            project            |  created   | interval |  deadline
----+-------------------------------+------------+----------+------------
  1 | Heron Therapeutics, Inc.      | 2021-10-23 |        9 | 2021-11-01
  2 | CryoPort, Inc.                | 2022-05-07 |        5 | 2022-05-12
  4 | Turtle Beach Corporation      | 2022-07-27 |       10 | 2022-08-06
  5 | Banco Santander Chile         | 2022-02-08 |        6 | 2022-02-14
  6 | BLACKROCK INTERNATIONAL, LTD. | 2022-07-28 |       10 | 2022-08-07
  7 | Sohu.com Inc.                 | 2021-10-14 |       12 | 2021-10-26
  8 | Northeast Bancorp             | 2022-07-20 |        6 | 2022-07-26

interval メソッドがなくても機能します。 クエリを次のように書くこともできます。

select id,
       project,
       created,
       interval,
       date(created + interval) as deadline
from project;

出力:

 id |            project            |  created   | interval |  deadline
----+-------------------------------+------------+----------+------------
  1 | Heron Therapeutics, Inc.      | 2021-10-23 |        9 | 2021-11-01
  2 | CryoPort, Inc.                | 2022-05-07 |        5 | 2022-05-12
  4 | Turtle Beach Corporation      | 2022-07-27 |       10 | 2022-08-06
  5 | Banco Santander Chile         | 2022-02-08 |        6 | 2022-02-14
  6 | BLACKROCK INTERNATIONAL, LTD. | 2022-07-28 |       10 | 2022-08-07
  7 | Sohu.com Inc.                 | 2021-10-14 |       12 | 2021-10-26
  8 | Northeast Bancorp             | 2022-07-20 |        6 | 2022-07-26

ここでは、deadline 列が created 列に日数の間隔を追加していることがわかります。 Postgres の日付と時刻の詳細については、次の公式 ドキュメント を参照してください。

著者: Shihab Sikder
Shihab Sikder avatar Shihab Sikder avatar

I'm Shihab Sikder, a professional Backend Developer with experience in problem-solving and content writing. Building secure, scalable, and reliable backend architecture is my motive. I'm working with two companies as a part-time backend engineer.

LinkedIn Website

関連記事 - PostgreSQL Date