Какво не е наред с:
SELECT a,b,c
FROM table
WHERE xtime BETWEEN '2012-04-01 23:55:00'::timestamp
AND now()::timestamp;
Ако искате да работите с броене на секунди като интервал
:
...
WHERE xtime BETWEEN now()::timestamp - (interval '1s') * $selectedtimeParm
AND now()::timestamp;
Забележете как използвах стандартния формат за дата ISO 8601 ГГГГ-ММ-ДД h24:mi:ss
което е недвусмислено с всеки локал или DateStyle
настройка.
Обърнете внимание също, че първата стойност за BETWEEN
конструкцията трябва да е по-малката. Ако не знаете коя стойност е по-малка, използвайте BETWEEN SYMMETRICкод>
вместо това.
Във вашия въпрос се позовавате на типа дата и час timestamp
като "дата", "час" и "период". В заглавието използвахте термина „времеви рамки“, който промених на „времеви отпечатъци“. Всички тези термини са грешни. Свободното им разменяне прави въпроса още по-труден за разбиране.
Това и фактът, че сте маркирали само въпроса psql
(проблемът едва ли засяга терминала на командния ред) може да помогне да се обясни защо никой не отговаря с дни. Обикновено това е въпрос на минути наоколо. Трудно ми беше да разбера въпроса ви, трябваше да го прочета няколко пъти.
Трябва да разберете типовете данни date
, интервал
, време
и timestamp
- със или без часова зона. Започнете, като прочетете главата "Типове дата/час" в ръководството .
Съобщението за грешка също би извършило дълъг път.