Как я могу получить эту дату в понедельник на PostgreSQL?
Например, сегодня 01/16/15 (пятница). На этой неделе понедельная дата - 01/12/15.
Ответ 1
SELECT current_date + cast(abs(extract(dow from current_date) - 7) + 1 as int);
работает, хотя могут быть более элегантные способы сделать это.
Общая идея - получить текущий день недели, dow, вычесть 7 и взять абс, который даст вам количество дней до конца недели и добавит 1, чтобы добраться до Понедельник. Это даст вам следующий понедельник.
EDIT: совершенно неверный вопрос, чтобы получить предыдущий понедельник, намного проще:
SELECT current_date - cast(extract(dow from current_date) as int) + 1;
т.е. вычесть текущий день недели с сегодняшней даты (число дневного пути в понедельник) и добавить один, чтобы вернуться в понедельник.