sql - 在 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”。
有人可以告诉我这是什么原因吗?谢谢
解决方案
根据PostgreSQL
date_trunc
粒度(day
、week
、month
等)将日期汇总到日期的第一个实例
对于月份,此实例是每月的第一天,即第 1 天。对于周,此实例是一周的第一天,即星期一。
假设日期是4th July 2021
星期日,那么date_trunc
将导致1st July 2021
月份和28th June 2021
星期,即该周内的星期一。
假设日期是5th July 2021
星期一本身,那么date_trunc
仍然会导致1st July 2021
月份,但由于5th July 2021
已经是星期一,所以会导致星期。
推荐阅读
- angular - 自定义表单控件,它是其他控件的包装器
- python-3.x - 网站不允许使用 selenium chrome 驱动程序在单选按钮或复选框按钮上进行选择
- spring-boot - server.tomcat.relaxed-query-chars=[,] 似乎允许 [ 和 ] 用于我的整个站点,有没有办法为特定的 api 资源执行此操作?
- javascript - 用值替换图像 url 模板
- javascript - 如何让 CSS 滚动捕捉与 JS 滚动事件侦听器一起工作?
- node.js - 如何按计划自动清理旧的 Twilio 聊天频道?
- swift - 即使使用 [MTKTextureLoader.Option.SRGB : false],金属也会渲染奇怪的深色纹理?
- c++ - 错误:使用已删除的函数 'std::unique_ptr<...>
- angular - 无法以角度配置 ngx-ui-loader
- docker - Docker mariadb unable to start