【发布时间】:2019-11-04 05:46:07
【问题描述】:
我需要将日期截断到一周的开始,在我的例子中是星期日。我怎样才能在 PostgreSQL 中做到这一点?这会截断到星期一:
date_trunc('week', mydate)
【问题讨论】:
标签: postgresql date truncate dayofweek weekday
我需要将日期截断到一周的开始,在我的例子中是星期日。我怎样才能在 PostgreSQL 中做到这一点?这会截断到星期一:
date_trunc('week', mydate)
【问题讨论】:
标签: postgresql date truncate dayofweek weekday
您可以将日期截断为一周的星期一,然后减去 1 天,例如:
SELECT (date_trunc('week', now() + interval '1 day') - interval '1 day')::DATE;
date
------------
2019-06-16
根据documentation,date_trunc() 接受date 和timestamp 类型的值并返回timestamp(因此是最后的强制转换)。
【讨论】:
如果您从当前日期减去 dow 值(0 表示周日,6 表示周六),则您将得到上一个周日,即您以周日为基础的一周的开始
SELECT
my_date - date_part('dow', my_date)::int
FROM
my_table
【讨论】:
date 类型,而date_trunc 同时适用于date 和timestamp。