JSON heeft geen "datum"-type. Het JSONB-type (toegevoegd in Pg 9.4 ) kaarten maar verlengt niet op JSON primitieve typen. De waarde die wordt gezien is wat het is, tekst.
Hoewel een index kan worden toegevoegd over tekenreekseigenschappen, kan het huidige "Engelse proza"-formaat niet deelnemen aan bereikquery's omdat dergelijke waarden niet goed geordend zijn over datums.
Verschillende manieren om goed geordende datums op te slaan, gezien de primitieve typebeperkingen.
-
Specifieke ISO 8601-variant (met dezelfde tijdzone); tekst
-
UNIX-tijd of "JavaScript-tijd" met milliseconden; geheel getal
-
Julian Day (zie de 'J'-datumformaat ); numeriek
(Gelijkheidsindexsondes kunnen worden gebruikt, zelfs als bereiken niet ... op voorwaarde dat de waarden exact overeenkomen, wat nog steeds onderhevig is aan het gebruik van een consistente gegevensrepresentatie.)
Bij het toepassen van een bereikquery over de (JSONB / GIN) index, converteer de DATE-waarden naar het juiste JSON-gegevenstype (toegewezen aan integer, numeriek, tekst in Pg) dat wordt gebruikt voor de eigenschap "date"; niet andersom.
Bij het ophalen van de waarden converteert u het gekozen formaat naar een DATE - het is 'oké' aangezien dit na wordt gedaan de bereikquery en 'vereist' omdat JSONB geen native ondersteuning biedt voor datums of tijden.