postgre 'YYYYQ' SQL的有效DATETIME格式吗?如果是这样,我如何使用我的数据?



我在postgres中有一些表,它们有一列表示年份,一列表示季度(都存储为bigint(。我需要能够在查询的输出中以"YYYYYQ"(而不是硬部分(的形式将它们组合在一起,并使该字段的数据类型为datetime(<--硬部分(。

我尝试过的唯一没有失败的查询是-

SELECT to_date((year::VARCHAR + quarter::VARCHAR),'YYYYQ') AS Stuff 
FROM company.products

虽然输出是DATETIME格式,但其中没有Quarter信息

样品-

stuff
2011-01-01
2011-01-01
2012-01-01
2012-01-01
2012-01-01

来自PostgreSQL文档(emphasis mine(:

to_timestampto_date中,工作日名称或数字(DAY、D和相关字段类型(被接受,但为了计算结果,被忽略四分之一(Q(字段也是如此

您可以保存季度第一天的日期。将记录的四分之一-1乘以3。

SELECT to_date('2021','YYYY') + interval '6 month';
?column?
---------------------
2021-07-01 00:00:00
SELECT to_char(to_date('2021','YYYY') + interval '6 month','YYYYQ');
to_char
---------
20213

SELECT q, 
to_char(to_date('2021','YYYY') + interval '3 month'*(q-1),'YYYYQ') as YYYYQ,
to_date('2021','YYYY') + interval '3 month'*(q-1) as d
FROM generate_series(1,4) f(q);
q | yyyyq |          d
---+-------+---------------------
1 | 20211 | 2021-01-01 00:00:00
2 | 20212 | 2021-04-01 00:00:00
3 | 20213 | 2021-07-01 00:00:00
4 | 20214 | 2021-10-01 00:00:00

最新更新