Postgresql
年度 PostgreSQL 專欄
我想將年份保存在 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
. 這太糟糕了,而且是一個受限制的日期更合適的地方。我傾向於使用受約束的日期,以便當需求不可避免地發生變化時,我可以更輕鬆地適應。