【发布时间】:2020-05-08 02:57:35
【问题描述】:
我有一个整数列,用于存储 yyyymm“日期”。怎么能加几个月呢?
CREATE VOLATILE TABLE tbl
(
prcs_mn int
) ON COMMIT PRESERVE ROWS;
INSERT INTO tbl VALUES (201602);
INSERT INTO tbl VALUES (201612);
我想添加两个“月”并返回:
201604
201702
我假设某种方式需要演员表;但是,语法让我感到困惑。
下面的第一个解决方案给出了日期 'mm/dd/yyyy' 格式。我添加了第二个cast,这导致了带有连字符的“yyyy-mm”格式。我错过了可以删除连字符的东西吗?否则,我将整个内容包装在 oreplace 函数中。这似乎可行,但相当难看......
select prcs_mn
, add_months( cast( cast(prcs_mn as varchar(6)) as date format 'yyyymm'), 2) as "mm/dd/yyyy"
, cast(add_months(cast(cast(prcs_mn as varchar(6)) as date format 'yyyymm'), 2) as varchar(7)) as "yyyy-mm"
, oreplace(cast(add_months(cast(cast(prcs_mn as varchar(6)) as date format 'yyyymm'), 2) as varchar(7)), '-', '') as yyyymm
from tbl;
prcs_mn mm/dd/yyyy yyyy-mm yyyymm
201612 02/01/2017 2017-02 201702
201602 04/01/2016 2016-04 201604
【问题讨论】:
标签: teradata teradata-sql-assistant