首页 > 解决方案 > 在 SQL (date_trunc) 中,周数最多为数月

问题描述

我正在研究 MODE 案例研究,可在此处访问https://mode.com/sql-tutorial/a-drop-in-user-engagement/#the-problem

我正在尝试访问表 2:具有日期列 'occured_at' 的事件。我想检查这个案例研究的时间框架,即几周和几个月。我写了一个简单的查询

select distinct(date_trunc('week', occurred_at)) as week, date_trunc('month', occurred_at) as month
from tutorial.yammer_events 
where event_type = 'engagement'
order by week;

令我惊讶的是,“2014-04-28”的第一周显示的月份是“May”而不是“April”。 在此处输入图像描述

有人可以告诉我这是什么原因吗?谢谢

标签: sqlpostgresql

解决方案


根据PostgreSQL date_trunc粒度(dayweekmonth等)将日期汇总到日期的第一个实例

对于月份,此实例是每月的第一天,即第 1 天。对于周,此实例是一周的第一天,即星期一。

假设日期是4th July 2021星期日,那么date_trunc将导致1st July 2021月份和28th June 2021星期,即该周内的星期一。

假设日期是5th July 2021星期一本身,那么date_trunc仍然会导致1st July 2021月份,但由于5th July 2021已经是星期一,所以会导致星期。


推荐阅读