Как укоротить дату до начала недели (воскресенье)? - PullRequest
3 голосов
/ 21 июня 2019

Мне нужно обрезать даты до начала недели, в моем случае это воскресенье. Как я могу сделать это в PostgreSQL? Это сокращает до понедельника:

date_trunc('week', mydate)

Ответы [ 2 ]

2 голосов
/ 21 июня 2019

Если вычтите значение dow (0 для воскресенья, 6 для субботы) из текущей даты, чем вы получите предыдущее воскресенье, которое является началом вашей недели, основанной на воскресенье

demo: db <> fiddle

SELECT 
    my_date - date_part('dow', my_date)::int
FROM
    my_table

Дополнительные материалы, документация

1 голос
/ 21 июня 2019

Вы можете сократить дату до понедельника недели, а затем вычесть 1 день, например:

SELECT (date_trunc('week', now() + interval '1 day') - interval '1 day')::DATE;
    date
------------
 2019-06-16

Согласно документации , date_trunc() принимает значения типа date и timestamp и возвращает timestamp (таким образом, приведение в конце).

...