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

Come rappresentare le date con incertezza in PostgreSQL

Esistono diversi modi per avvicinarsi alle date sfocate. In PostgreSQL puoi usare

  • una coppia di colonne di data (data_prima_possibile, data_ultima_possibile),
  • una colonna della data e una colonna della precisione ("2012-01-01", "anno") oppure
  • un tipo di dati dell'intervallo (intervallo di date) o
  • a varchar ('2013-01-2?', '2013-??-05'), oppure
  • un'altra tabella o tabelle con uno di questi tipi di dati.

Il tipo di dati range è peculiare delle versioni recenti di PostgreSQL. Puoi usare gli altri in qualsiasi dbms SQL.

Il tipo di sfocatura di cui hai bisogno dipende dall'applicazione. Il modo in cui interroghi le date fuzzy dipende dal tipo di dati o dalla struttura che scegli. Hai bisogno di una solida conoscenza del tipo di sfocatura che devi archiviare e del tipo di domande a cui i tuoi utenti devono rispondere. E devi testare per assicurarti che il tuo database possa rispondere alle loro domande.

Ad esempio, nei sistemi legali le date potrebbero essere ricordate male o cancellate. Qualcuno potrebbe dire "Era un giovedì di gennaio 2014. Lo so era un giovedì, perché era il giorno della raccolta dei rifiuti", oppure "Era la prima settimana di giugno o luglio dell'anno scorso". Per registrare quel tipo di sfocatura, hai bisogno di un altro tavolo.

Oppure un timbro postale potrebbe essere rovinato in modo da poter leggere solo "14, 2014". Sai che è stata timbrata il 14, ma non sai in quale mese. Ancora una volta, hai bisogno di un altro tavolo.

Alcuni (tutti?) di questi non ti daranno una logica a tre valori a meno che tu non salti attraverso alcuni cerchi. ("Possible" non è un valore booleano valido.)