2016-12-20 5 views
3

Я искал в Интернете правильный синтаксис postgreSQL для current_week. Я просмотрел ссылку, но ничего не смог получить от нее Date/Time. Моя задача - получить воскресенье в качестве начала недели.Получить текущую неделю в postgreSQL

я попытался так же, как CURRENT_DATE но это не удалось:

select current_week 

Там должна быть текущая неделя синтаксис PostGreSQL.

+0

обновления вопрос, чтобы отразить, что вы хотите неделю, чтобы начать в воскресенье? .. –

+0

Вопрос обновлен. –

ответ

3

knowing that для extract('dow' from

За день недели в воскресенье (0) в субботу (6)

и

По определению ISO недели начинает по понедельникам

Вы можете обойти вычитание один день:

select date_trunc('week', current_date) - interval '1 day' as current_week 
    current_week 
------------------------ 
2016-12-18 00:00:00+00 
(1 row) 

Вот пример:

t=# with d as (select generate_series('2016-12-11','2016-12-28','1 day'::interval) t) 
select date_trunc('week', d.t)::date - interval '1 day' as current_week, extract('dow' from d.t), d.t from d 
; 
    current_week  | date_part |   t 
---------------------+-----------+------------------------ 
2016-12-04 00:00:00 |   0 | 2016-12-11 00:00:00+00 
2016-12-11 00:00:00 |   1 | 2016-12-12 00:00:00+00 
2016-12-11 00:00:00 |   2 | 2016-12-13 00:00:00+00 
2016-12-11 00:00:00 |   3 | 2016-12-14 00:00:00+00 
2016-12-11 00:00:00 |   4 | 2016-12-15 00:00:00+00 
2016-12-11 00:00:00 |   5 | 2016-12-16 00:00:00+00 
2016-12-11 00:00:00 |   6 | 2016-12-17 00:00:00+00 
2016-12-11 00:00:00 |   0 | 2016-12-18 00:00:00+00 
2016-12-18 00:00:00 |   1 | 2016-12-19 00:00:00+00 
2016-12-18 00:00:00 |   2 | 2016-12-20 00:00:00+00 
2016-12-18 00:00:00 |   3 | 2016-12-21 00:00:00+00 
2016-12-18 00:00:00 |   4 | 2016-12-22 00:00:00+00 
2016-12-18 00:00:00 |   5 | 2016-12-23 00:00:00+00 
2016-12-18 00:00:00 |   6 | 2016-12-24 00:00:00+00 
2016-12-18 00:00:00 |   0 | 2016-12-25 00:00:00+00 
2016-12-25 00:00:00 |   1 | 2016-12-26 00:00:00+00 
2016-12-25 00:00:00 |   2 | 2016-12-27 00:00:00+00 
2016-12-25 00:00:00 |   3 | 2016-12-28 00:00:00+00 
(18 rows) 

Time: 0.483 ms 
+0

Спасибо Вао, есть еще одна альтернатива этому. Это действительно длительный процесс, чтобы получить воскресенье в качестве начала недели. –

+0

хорошо - я просто перефразировал ваш 'select date_trunc ('week', current_date - 1) как current_week', чтобы' select date_trunc ('week', current_date) - interval '1 day' as current_week' –

+0

Fabulous Vao, спасибо !!! –

2

Один метод должен был бы date_trunc():

select date_trunc('week', current_date) as current_week 
+0

Спасибо, Гордон, это показывает 19 декабря как текущую неделю. В любом случае, я могу показать воскресенье, 18 декабря, как текущую неделю с начала недели в воскресенье. –

+1

@PythonLearner Вы всегда можете вычесть выходной день, если хотите, чтобы это было воскресенье. –

+0

выберите date_trunc ('week', current_date - 1) как current_week ....... это все еще показывает 19 декабря. –