Синтаксис: date_trunc
немного отключен:
select *
from callhistory
where created > date_trunc('minute', current_timestamp - interval '5' minute)
Вы также можете использовать now()
вместо current_timestamp
:
select *
from callhistory
where created > date_trunc('minute', now() - interval '5' minute)
И пример:
=> create table stuff (created timestamp not null);
=> insert into stuff (created) values (current_timestamp);
-- Wait a could seconds...
=> insert into stuff (created) values (current_timestamp);
=> select * from stuff where created > date_trunc('minute', current_timestamp - interval '5' minute);
created
----------------------------
2011-06-01 11:32:55.672027
2011-06-01 11:33:00.182953
=> select * from stuff where created > date_trunc('minute', current_timestamp - interval '7' day);
created
----------------------------
2011-06-01 11:32:55.672027
2011-06-01 11:33:00.182953
ОБНОВЛЕНИЕ : похоже, что PostgreSQL версии 8 немного строже в формате для interval
, в подробном руководстве сказано, что вы должны использовать interval '$n $unit'
, где $n
количество вещей и $unit
- единица времени. Версия 9 позволяет вам говорить interval '$n' $unit
без жалоб, но версия 8 преобразует ваш интервал в 0, если вы не используете документированный формат. Таким образом, вы должны использовать это как для версии 8, так и для версии 9:
select *
from callhistory
where created > date_trunc('minute', current_timestamp - interval '5 minute')