2013-09-09 3 views
10

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

ответ

10
> 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 зависит от вашего языка и настроек.

1

Вы можете установить дату или удалить дни с текущего дня.

Показать this: являются дата операторы и функция/времени, присутствующей в Postgres

Я связала 9.1 функции, потому что вы с тегами Postgres 9.1, существует тоже 9,2 ссылки на странице

+0

Можете ли вы дать точный пример того, как получить «конец последней недели», пожалуйста? – yegor256

+0

@ yegor256: Извините, я только что прочитал. См. Ответ regilero. –