PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come memorizzare date con diversi livelli di precisione in postgres?

Lo memorizzerei come date e memorizza anche la precisione.

Ad esempio:

CREATE TYPE date_prec AS ENUM ('day', 'month', 'year');

CREATE TABLE pub (
   pub_id integer PRIMARY KEY,
   pub_date date NOT NULL,
   pub_date_prec date_prec NOT NULL
);

Quindi puoi interrogare la tabella in questo modo:

SELECT pub_id, date_trunc(pub_date_prec::text, pub_date)::date FROM pub;

per ignorare qualsiasi valore di giorno e mese "casuale" in pub_date .