Return 当前季度过去的天数
Return number of days passed in current quarter
如何获取当前季度的天数?
例如,如果今天是 2021 年 1 月 2 日,它将 return 2.
如果今天是2/5,那就是return36.
如果今天是 4/2,它将 return 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
设置(和可能会有惊喜)。也避免了一般交流的误会。
相关:
- PostgreSQL: between with datetime
如何获取当前季度的天数?
例如,如果今天是 2021 年 1 月 2 日,它将 return 2.
如果今天是2/5,那就是return36.
如果今天是 4/2,它将 return 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
设置(和可能会有惊喜)。也避免了一般交流的误会。
相关:
- PostgreSQL: between with datetime