PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Risultati imprevisti da query SQL con timestamp BETWEEN

Controlla il tipo di dati delle colonne e il tuo fuso orario . Potresti confondere timestamp with time zone e timestamp .

Sembra che tu abbia timestamp nella tabella, ma interroga con timestamptz . In questo modo, tutto dipende dal fuso orario locale della tua sessione (che per impostazione predefinita è il fuso orario del server se non diversamente specificato.)

Passa entrambi a timestamptz o timestamp se i fusi orari sono completamente irrilevanti per te. (In caso di dubbio, usa timestamptz .)

Non è la causa del tuo problema, ma probabilmente la tua domanda dovrebbe essere:

SELECT id, text, category, starttime, endtime, creation 
FROM   entries 
WHERE  starttime >= timestamp '2013-03-21' -- defaults to 00:00 time
AND    starttime <  timestamp '2013-03-22'
ORDER  BY id

a BETWEEN x AND y è quasi sempre sbagliato per timestamp tipi a causa di numeri frazionari! Che cosa farebbe la tua query con starttime = '2013-03-21T23:59:59.123+00' ?