Postgresql

年度 PostgreSQL 專欄

  • April 30, 2015

我想將年份保存在 PostgreSQL 數據庫中 - 只是年份。我應該如何創建這個欄位?那裡有很多資訊如何從日期欄位中提取年份,但沒有關於如何設置僅使用年份的表格。我試過這個:

CREATE TABLE information (
   id serial PRIMARY KEY,
   year date NOT NULL
);

INSERT INTO "information" ("year") VALUES (2010);

但這失敗了:

ERROR: invalid input syntax for type date: "2010"

要麼使用一個簡單的整數並將 BC 表示為負數:

CREATE TABLE information (
 id serial PRIMARY KEY,
 year integer NOT NULL
);

或使用date限制在 1 月 1 日的 a 並2014-01-01在輸入/輸出中使用 etc:

CREATE TABLE information (
   id serial PRIMARY KEY,
   year date NOT NULL,
   CONSTRAINT year_must_be_1st_jan CHECK ( date_trunc('year', year) = year )
);

哪個更合適主要取決於您的應用程序如何使用這些資訊。我認為將一年表示為一個簡單的整數是可以的——只是請不要year integer, month integer. 這太糟糕了,而且是一個受限制的日期更合適的地方。

我傾向於使用受約束的日期,以便當需求不可避免地發生變化時,我可以更輕鬆地適應。

引用自:https://dba.stackexchange.com/questions/99207