
PostgreSQLで連続する日付を追加
以下のような日付テーブルがあったとします。
CREATE TABLE 日付テーブル (
id integer DEFAULT nextval('"日付テーブル_id_seq"'::regclass) PRIMARY KEY,
日付 date NOT NULL,
備考 text
);
これにINSERT INTOで 2025-01-01 から 2025-01-31 まで入力したい場合はINSERT INTOを使用して1つずつ追加する必要があります。
INSERT INTO 日付テーブル (日付, 備考)
VALUES
('2025-01-01', NULL),
('2025-01-02', NULL),
-- 中略
('2025-01-30', NULL),
('2025-01-31', NULL);
MySQLだとINSERT INTOのVALUESがたくさん必要になりますが、PostgreSQLだと連続する日付をgenerate_series()で生成できるので短いコードで済みます。
INSERT INTO 日付テーブル (日付, 備考)
SELECT 日付, NULL
FROM generate_series('2025-01-01'::DATE, '2025-01-31'::DATE, '1 day'::INTERVAL) AS 日付;
後者のほうがいつからいつまでの日付かひと目でわかるので、連続する日付などのレコードを追加する場合はgenerate_series()を使用したほうが良いです。