PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

JSONb-Daten:tatsächliche Daten intern?

JSON hat keinen „date“-Typ. Der JSONB-Typ (hinzugefügt in Seite 9.4 ) Maps, aber wird nicht erweitert auf JSON-Primitive-Typen. Der gesehene Wert ist, was er ist, Text.

Während ein Index über String-Eigenschaften hinzugefügt werden kann, kann das aktuelle "englische Prosa"-Format nicht an Bereichsabfragen teilnehmen weil solche Werte über Datumsangaben nicht gut geordnet sind.

Verschiedene Möglichkeiten zum Speichern geordneter Daten angesichts der Beschränkungen für primitive Typen.

(Gleichheitsindexsonden können auch dann verwendet werden, wenn Bereiche nicht ... vorausgesetzt, die Werte passen genau zusammen, was immer noch der Verwendung einer konsistenten Datendarstellung unterliegt.)

Wenn Sie eine Bereichsabfrage über den (JSONB/GIN)-Index anwenden, konvertieren Sie die DATE-Werte in den entsprechenden JSON-Datentyp (abgebildet auf Integer, Numerisch, Text in Pg), der für die „date“-Eigenschaft verwendet wird; nicht umgekehrt.

Konvertieren Sie beim Abrufen der Werte das gewählte Format in ein DATUM - es ist 'okay', da dies nach erfolgt die Bereichsabfrage und 'erforderlich', da JSONB Datums- oder Zeitangaben nicht nativ unterstützt.