O que há de errado com:
SELECT a,b,c
FROM table
WHERE xtime BETWEEN '2012-04-01 23:55:00'::timestamp
AND now()::timestamp;
Se você deseja operar com uma contagem de segundos como
intervalo
:...
WHERE xtime BETWEEN now()::timestamp - (interval '1s') * $selectedtimeParm
AND now()::timestamp;
Observe como usei o formato de data padrão ISO 8601
YYYY-MM-DD h24:mi:ss
que não é ambíguo com qualquer localidade ou DateStyle
contexto. Observe também que o primeiro valor para
BETWEEN
construção deve ser a menor. Se você não sabe qual valor é menor, use BETWEEN SYMMETRIC
em vez de. Na sua pergunta, você se refere ao tipo de data e hora
timestamp
como "data", "hora" e "período". No título você usou o termo "time frames", que eu mudei para "timestamps". Todos esses termos estão errados. Intercambiá-los livremente torna a questão ainda mais difícil de entender. Isso e o fato de você ter marcado apenas a pergunta
psql
(o problema dificilmente diz respeito ao terminal de linha de comando) pode ajudar a explicar por que ninguém respondeu por dias. Normalmente, é uma questão de minutos por aqui. Tive dificuldade em entender sua pergunta, tive que ler algumas vezes. Você precisa entender os tipos de dados
date
, intervalo
, hora
e timestamp
- com ou sem fuso horário. Comece lendo o capítulo "Date/Time Types" no manual . A mensagem de erro também teria percorrido um longo caminho.