如何解决Concat年和月,但大小固定
我有以下数据集:
CREATE TABLE my_table (
the_debt_id varchar(6) NOT NULL,the_debt_due date NOT NULL,the_debt_paid timestamp NOT NULL
);
INSERT INTO my_table
VALUES ('LMUS01','2020-08-02','2020-05-18 11:07:01'),('LMUS01','2020-07-02','2020-06-02','2020-05-02','2020-04-28 02:28:41'),'2020-04-02','2020-04-01 06:29:53'),'2020-03-02','2020-03-02 07:30:59'),'2020-02-02','2020-01-31 06:58:18');
我只是想保留the_debt_due
的年份和月份,但是当我尝试这样做时:
SELECT the_debt_id,cast(concat(extract('year' from the_debt_due),extract('month' from the_debt_due)) as integer)
FROM my_table
从1月到9月的几个月中,它返回五位数字(例如,五月份为20205
,而在其余年份中,则返回六位数字(例如,为十二月,返回202012
)。可以得到六位数吗?这是预期的输出:
the_debt_id concat
LMUS01 202008
LMUS01 202007
LMUS01 202006
LMUS01 202005
LMUS01 202004
LMUS01 202003
LMUS01 202002
解决方法
不需要填充逻辑。只需使用to_char()
:
select the_debt_id,to_char(the_debt_due,'yyyymm') the_debt_due_char
from mytable
,
要显示,请像提供的GMB一样使用to_char()
。
如果您需要integer
(如转换所示),这比转换to_char()
的结果要快:
SELECT (EXTRACT(year FROM the_debt_due) * 100 + EXTRACT(month FROM the_debt_due))::int;
在针对此相关答案进行优化时,我同时进行了测试:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。