Я пытаюсь выбрать все транзакции в PostgreSQL 9, которые произошли раньше, чем в конце прошлой недели. Какую функцию даты я должен использовать для построения такого интервала?
Как урезать дату в PostgreSQL?
Ответ 1
> select now();
"2013-09-09 11:43:29.307089+02"
> select date_trunc('week',now()-'1 week'::interval);
"2013-09-02 00:00:00+02" //start of previous week
> select date_trunc('week',now())
"2013-09-09 00:00:00+02" // start of current week
> select date_trunc('week',now())-'1 s'::interval;
"2013-09-08 23:59:59+02" // end of previous week
Поэтому использование date_trunc('week',now())-'1 s'::interval;
в правой части вашей даты должно работать. Это временная метка со значением часового пояса, которая в действительности относится к 23:59:59 в воскресенье, но с 2 часами разницы с временем UTC зависит от вашей локали и настроек.
Ответ 2
Вы можете исправить дату или удалить дни с текущего дня.
Показать this: операторы и функции даты и времени, присутствующие в Postgres
Я связал 9.1 функции, потому что вы отметили postgres 9.1, также существует страница с описанием 9.2