postgresql - 返回当前季度过去的天数
问题描述
如何获取当前季度经过的天数?
例如,如果今天是 2021 年 1 月 2 日,则返回 2。
如果今天是 2/5,则返回 36。
如果今天是 4/2,则返回 2。
解决方案
用于date_trunc()
获取季度的开始并减去日期:
WITH cte(day) AS (
VALUES
(date '2021-01-02')
, (date '2021-02-05')
, (date '2021-04-02')
)
SELECT day
, day - date_trunc('quarter', day)::date + 1 AS days_passed_in_quarter
FROM cte;
day | days_passed_in_quarter
------------+------------------------
2021-01-02 | 2
2021-02-05 | 36
2021-04-02 | 2
+ 1
修复一个错误,因为您显然希望将当天包含为“已通过” 。
始终使用明确的 ISO 8601 日期格式 ( YYYY-MM-DD
- 2021-02-05
),这是 Postgres 中的默认设置,并且始终明确,或者您取决于当前datestyle
设置(可能会感到意外)。也避免了误会一般的沟通。
有关的:
推荐阅读
- html - 许多项目显示在同一位置 CSS 网格
- vector - 在 Rcpp 中组合字符向量
- html - 同一文件夹中的 CSS 外部样式表在计算机中有效,但在电话中无效........谁能帮助我?
- php - 减少 php if 语句
- excel - 跳过自动过滤器的无返回值
- reactjs - 太多的重新渲染。React 限制渲染次数以防止无限循环
- ansible - 在 AWX loop_control 中不会迭代 dict
- r - 使用带有 if else 条件的 map 从嵌套数据框中提取特定行
- pandas - 如何在 Matplotlib Graph 中调整图例标签的大小
- node.js - 如何使用猫鼬将一组不同类型的对象保存到数据库中?