PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment représenter des dates avec incertitude dans PostgreSQL

Il existe plusieurs façons d'aborder les dates floues. Dans PostgreSQL, vous pouvez utiliser

  • une paire de colonnes de date (earliest_possible_date, latest_possible_date),
  • une colonne de date et une colonne de précision ("2012-01-01", "année"), ou
  • un type de données de plage (plage de dates), ou
  • un varchar ('2013-01-2 ?', '2013-??-05'), ou
  • une autre table ou des tables avec l'un de ces types de données.

Le type de données range est propre aux versions récentes de PostgreSQL. Vous pouvez utiliser les autres dans n'importe quel SGBD SQL.

Le type de flou dont vous avez besoin dépend de l'application. La façon dont vous interrogez les dates floues dépend du type de données ou de la structure que vous choisissez. Vous devez bien comprendre les types de flou que vous devez stocker et le type de questions auxquelles vos utilisateurs doivent répondre. Et vous devez tester pour vous assurer que votre base de données peut répondre à leurs questions.

Par exemple, dans les systèmes juridiques, les dates peuvent être mal mémorisées ou dégradées. Quelqu'un pourrait dire "C'était un jeudi de janvier 2014. Je sais c'était un jeudi, car c'était le jour du ramassage des ordures", ou "C'était la première semaine de juin ou de juillet de l'année dernière". Pour enregistrer ce genre de flou, vous avez besoin d'un autre tableau.

Ou un cachet de la poste peut être gâché de sorte que vous ne puissiez lire que "14, 2014". Vous savez que c'était le 14, mais vous ne savez pas quel mois. Encore une fois, vous avez besoin d'une autre table.

Certains (tous?) D'entre eux ne vous donneront pas de logique à trois valeurs à moins que vous ne sautiez à travers quelques cerceaux. ("Possible" n'est pas une valeur booléenne valide.)