Der er flere forskellige måder at nærme sig fuzzy dates på. I PostgreSQL kan du bruge
- et par datokolonner (tidligst_mulig_dato, seneste_mulig_dato),
- en datokolonne og en præcisionskolonne ('2012-01-01', 'år'), eller
- en områdedatatype (datointerval), eller
- a varchar ('2013-01-2?', '2013-??-05'), eller
- en anden tabel eller tabeller med nogen af disse datatyper.
Områdedatatypen er ejendommelig for nyere versioner af PostgreSQL. Du kan bruge de andre i enhver SQL-dbms.
Den slags uklarhed, du har brug for, er applikationsafhængig. Hvordan du forespørger på uklare datoer afhænger af, hvilken datatype eller struktur du vælger. Du har brug for et fast greb om, hvilken slags uklarhed du skal opbevare, og om den slags spørgsmål, dine brugere skal have besvaret. Og du skal teste for at sikre, at din database kan besvare deres spørgsmål.
For eksempel kan datoer i juridiske systemer blive husket dårligt eller skæmmet. Nogen vil måske sige "Det var en torsdag i januar 2014. Jeg ved det det var en torsdag, fordi det var affaldsdag", eller "Det var den første uge i enten juni eller juli sidste år". For at registrere den slags uklarhed skal du bruge et andet bord.
Eller et poststempel kan være skæmmet, så du kun kan læse "14, 2014". Du ved, det blev poststemplet den 14., men du ved ikke hvilken måned. Igen har du brug for et andet bord.
Nogle (alle?) af disse vil ikke give dig logik med tre værdier, medmindre du springer gennem nogle bøjler. ("Muligt" er ikke en gyldig boolsk værdi.)