Co jest nie tak z:
SELECT a,b,c
FROM table
WHERE xtime BETWEEN '2012-04-01 23:55:00'::timestamp
AND now()::timestamp;
Jeśli chcesz operować z liczbą sekund jako interwał
:
...
WHERE xtime BETWEEN now()::timestamp - (interval '1s') * $selectedtimeParm
AND now()::timestamp;
Zwróć uwagę, jak użyłem standardowego formatu daty ISO 8601 RRRR-MM-DD h24:mi:ss
co jest jednoznaczne dla dowolnej lokalizacji lub DateStyle
ustawienie.
Zauważ również, że pierwsza wartość dla BETWEEN
konstrukcja musi być mniejsza. Jeśli nie wiesz, która wartość jest mniejsza, użyj BETWEEN SYMMETRIC
zamiast tego.
W swoim pytaniu odnosisz się do typu daty i godziny znacznik czasu
jako „data”, „godzina” i „okres”. W tytule użyłeś terminu „ramki czasowe”, który zmieniłem na „znaczniki czasu”. Wszystkie te terminy są błędne. Swobodna ich zamiana sprawia, że pytanie jest jeszcze trudniejsze do zrozumienia.
To i fakt, że otagowałeś tylko pytanie psql
(problem prawie nie dotyczy terminala wiersza poleceń) może pomóc wyjaśnić, dlaczego nikt nie odpowiadał przez wiele dni. Zwykle to kwestia minut. Trudno mi było zrozumieć twoje pytanie, musiałem je przeczytać kilka razy.
Musisz zrozumieć typy danych data
, przedział
, czas
i sygnatura czasowa
- ze strefą czasową lub bez. Zacznij od przeczytania rozdziału "Typy dat/godzin" w podręczniku .
Komunikat o błędzie też przeszedłby długą drogę.