PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Resultados inesperados da consulta SQL com carimbos de data/hora BETWEEN


Verifique o tipo de dados das colunas e seu fuso horário . Você pode estar confundindo timestamp with time zone e timestamp .

Parece que você tem timestamp na sua tabela, mas consulte com timestamptz . Dessa forma, tudo depende do fuso horário local da sua sessão (que tem como padrão o fuso horário do servidor se não for especificado de outra forma).

Alterne ambos para timestamptz , ou timestamp se os fusos horários forem completamente irrelevantes para você. (Em caso de dúvida, use timestamptz .)

Não é a causa do seu problema, mas sua consulta provavelmente deve ser:
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 é quase sempre errado para timestamp tipos devido a números fracionários! O que sua consulta faria com starttime = '2013-03-21T23:59:59.123+00' ?