Postgresql 如何将日期截断为周初(星期日)?

Postgresql 如何将日期截断为周初(星期日)?,postgresql,date,truncate,dayofweek,weekday,Postgresql,Date,Truncate,Dayofweek,Weekday,我需要把日期截短到一周的开始,在我的情况下是星期天。如何在PostgreSQL中执行此操作?这将截短到星期一: date_trunc('week', mydate) 您可以将日期截断为一周的星期一,然后减去一天,例如: SELECT (date_trunc('week', now() + interval '1 day') - interval '1 day')::DATE; date ------------ 2019-06-16 根据,date\u trunc()接受类型为da

我需要把日期截短到一周的开始,在我的情况下是星期天。如何在PostgreSQL中执行此操作?这将截短到星期一:

date_trunc('week', mydate)

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

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

根据,
date\u trunc()
接受类型为
date
timestamp
的值,并返回一个
timestamp
(因此在末尾进行强制转换)。

如果减去
dow
值(
0
用于星期天,
6
用于星期六)从当前日期开始,您将获得上一个星期日,这是基于星期日的一周的开始


这种方法的一个缺点是它只适用于
日期
类型,而
日期
同时适用于
日期
时间戳
。是的。但是您可以在操作之前将时间戳强制转换为日期,因为时间部分无论如何都会被截断。
SELECT 
    my_date - date_part('dow', my_date)::int
FROM
    my_table