返回当前季度过去的天数

时间:2021-06-15 22:42:28

标签: postgresql date date-math quarter

如何获取本季度过去的天数?

例如,如果今天是 1/2/2021,则返回 2。
如果今天是 2/5,则返回 36。
如果今天是 4/2,则返回 2。

1 个答案:

答案 0 :(得分:0)

使用 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 设置(并且可能是为了惊喜)。也避免误解一般的沟通。

相关: