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