Как урезать дату в PostgreSQL?

Я пытаюсь выбрать все транзакции в PostgreSQL 9, которые произошли раньше, чем в конце прошлой недели. Какую функцию даты я должен использовать для построения такого интервала?

Ответ 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