如何将日期截断到一周的开始(星期日)?

How to truncate a date to the beginning of week (Sunday)?

我需要将日期截断到一周的开始,在我的例子中是星期天。我如何在 PostgreSQL 中执行此操作?这截断到星期一:

date_trunc('week', mydate)

您可以将日期截断为一周的星期一,然后减去 1 天,例如:

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

根据 documentationdate_trunc() 接受类型 datetimestamp 和 returns a timestamp 的值(因此在结束)。

如果您从当前日期中减去 dow 值(0 表示星期日,6 表示星期六),那么您得到的是前一个星期日,也就是您 Sunday-based周

demo:db<>fiddle

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

Further reading, documentation