sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man representerar datum med osäkerhet i PostgreSQL

Det finns flera olika sätt att närma sig luddiga dejter. I PostgreSQL kan du använda

  • ett par datumkolumner (tidigaste_möjliga_datum, senaste_möjliga_datum),
  • en datumkolumn och en precisionskolumn ('2012-01-01', 'år'), eller
  • en intervalldatatyp (datumintervall), eller
  • a varchar ('2013-01-2?', '2013-??-05'), eller
  • en annan tabell eller tabeller med någon av dessa datatyper.

Områdesdatatypen är speciell för de senaste versionerna av PostgreSQL. Du kan använda de andra i alla SQL-dbms.

Den typ av luddighet du behöver är applikationsberoende. Hur du frågar efter otydliga datum beror på vilken datatyp eller struktur du väljer. Du behöver ett fast grepp om vilken typ av luddighet du behöver lagra och vilken typ av frågor dina användare behöver besvaras. Och du måste testa för att se till att din databas kan svara på deras frågor.

Till exempel kan datum i rättssystemen komma ihåg dåligt eller förstöra. Någon kanske säger "Det var en torsdag i januari 2014. Jag vet det var en torsdag, eftersom det var skräphämtningsdag", eller "Det var den första veckan i antingen juni eller juli förra året". För att spela in den typen av luddighet behöver du ett annat bord.

Eller ett poststämpel kan skadas så att du bara kan läsa "14, 2014". Du vet att det poststämplades den 14, men du vet inte vilken månad. Återigen, du behöver ett annat bord.

Vissa (alla?) av dessa kommer inte att ge dig logik med tre värden om du inte hoppar igenom några ramar. ("Möjligt" är inte ett giltigt booleskt värde.)



  1. Hur hindrar man någon från att gå tillbaka till föregående sida?

  2. Postgres delad sträng med dubbla citattecken till flera rader?

  3. Oracle SQL Skapa datum från delar

  4. Hotellrumspriser för olika säsonger