Er zijn verschillende manieren om vage datums te benaderen. In PostgreSQL kunt u
. gebruiken- een paar datumkolommen (earliest_possible_date, laatste_possible_date),
- een datumkolom en een precisiekolom ('2012-01-01', 'jaar'), of
- een bereikgegevenstype (datumbereik), of
- een varchar ('2013-01-2?', '2013-??-05'), of
- een andere tabel of tabellen met een van deze gegevenstypen.
Het gegevenstype bereik is eigen aan recente versies van PostgreSQL. Je kunt de andere gebruiken in elke SQL dbms.
Het soort wazigheid dat u nodig heeft, is afhankelijk van de toepassing. Hoe u vage datums opvraagt, hangt af van het gegevenstype of de structuur die u kiest. U moet een goed begrip hebben van wat voor soort wazigheid u moet opslaan en van het soort vragen dat uw gebruikers moeten beantwoorden. En je moet testen om er zeker van te zijn dat je database hun vragen kan beantwoorden.
In rechtssystemen kunnen datums bijvoorbeeld slecht worden onthouden of onleesbaar worden gemaakt. Iemand zou kunnen zeggen:"Het was een donderdag in januari 2014. Ik weet het was een donderdag, omdat het vuilnisophaaldag was", of "Het was de eerste week van juni of juli vorig jaar". Om dat soort wazigheid vast te leggen, heb je een andere tafel nodig.
Of een poststempel kan ontsierd zijn, zodat u alleen "14, 2014" kunt lezen. Je weet dat het op de 14e is afgestempeld, maar je weet niet welke maand. Nogmaals, je hebt een andere tafel nodig.
Sommige (alle?) hiervan zullen je geen driewaardige logica geven, tenzij je door een paar hoepels springt. ("Mogelijk" is geen geldige Booleaanse waarde.)