Co je špatného na:
SELECT a,b,c
FROM table
WHERE xtime BETWEEN '2012-04-01 23:55:00'::timestamp
AND now()::timestamp;
Pokud chcete pracovat s počtem sekund jako interval
:
...
WHERE xtime BETWEEN now()::timestamp - (interval '1s') * $selectedtimeParm
AND now()::timestamp;
Všimněte si, jak jsem použil standardní formát data ISO 8601 YYYY-MM-DD h24:mi:ss
který je jednoznačný pro jakékoli národní prostředí nebo DateStyle
nastavení.
Všimněte si také, že první hodnota pro BETWEEN
konstrukce musí být menší. Pokud nevíte, která hodnota je menší, použijte BETWEEN SYMMETRIC
místo toho.
Ve své otázce odkazujete na typ data a času timestamp
jako „datum“, „čas“ a „období“. V názvu jste použili termín „časové rámce“, který jsem změnil na „časová razítka“. Všechny tyto termíny jsou špatné. Jejich volné zaměňování činí otázku srozumitelnější.
To a skutečnost, že jste označili pouze otázku psql
(problém se stěží týká terminálu příkazového řádku) by mohl pomoci vysvětlit, proč nikdo neodpověděl celé dny. Normálně je to tady otázka minut. Měl jsem problém pochopit vaši otázku, musel jsem si ji několikrát přečíst.
Musíte rozumět datovým typům date
, interval
, time
a timestamp
- s nebo bez časového pásma. Začněte přečtením kapitoly "Typy data/času" v příručce .
Chybová zpráva by také zašla hodně daleko.