sql >> Base de Datos >  >> RDS >> PostgreSQL

Fechas JSONb:¿fechas reales internamente?

JSON no tiene un tipo de "fecha". El tipo JSONB (agregado en Pg 9.4 ) mapea pero no se extiende sobre tipos primitivos JSON. El valor visto es el que es, texto.

Si bien se puede agregar un índice sobre las propiedades de cadena, el formato actual de "prosa en inglés" no podrá participar en consultas de rango porque dichos valores no están bien ordenados sobre las fechas.

Diferentes formas de almacenar fechas bien ordenadas, dadas las restricciones de tipo primitivo.

(Las sondas de índice de igualdad se pueden usar incluso si los rangos no pueden... siempre que los valores coincidan exactamente, lo que aún está sujeto al uso de una representación de datos consistente).

Al aplicar una consulta de rango sobre el índice (JSONB / GIN), convierta los valores de FECHA al tipo de datos JSON adecuado (asignado a entero, numérico, texto en Pg) utilizado para la propiedad "fecha"; no al revés.

Al obtener los valores, convierta el formato elegido a una FECHA; está "bien", ya que esto se hace después la consulta de rango y 'requerido' ya que JSONB no admite fechas u horas de forma nativa.