Что не так с:
SELECT a,b,c
FROM table
WHERE xtime BETWEEN '2012-04-01 23:55:00'::timestamp
AND now()::timestamp;
Если вы хотите работать с числом секунд как interval
:
...
WHERE xtime BETWEEN now()::timestamp - (interval '1s') * $selectedtimeParm
AND now()::timestamp;
Обратите внимание, как яиспользовался стандартный формат даты ISO 8601 YYYY-MM-DD h24:mi:ss
, который однозначен для любой локали или DateStyle
.
Обратите также внимание, что первое значение для конструкции BETWEEN должно быть меньшим,Если вы не знаете, какое значение меньше, используйте BETWEEN SYMMETRIC
.
В своем вопросе вы ссылаетесь на тип даты и времени timestamp
как «дата», «время» и «период».В заголовке вы использовали термин «временные рамки», который я изменил на «временные метки».Все эти термины неверны.Свободный обмен ими делает вопрос еще труднее понять.
Это, и тот факт, что вы пометили только вопрос psql
(проблема не касается терминала командной строки), может помочь объяснить, почему никто не ответил в течение нескольких дней.,Обычно, это считанные минуты здесь.Мне было трудно понять ваш вопрос, пришлось прочитать его пару раз.
Вам необходимо понять типы данных date
, interval
, time
и timestamp
- с или безчасовой пояс.Начните с прочтения главы «Типы даты / времени» в руководстве .
Сообщение об ошибке также могло бы иметь большое значение.