У меня есть целочисленный столбец, в котором хранится «дата» в ггггмм. Как можно добавить к нему месяцы?
CREATE VOLATILE TABLE tbl
(
prcs_mn int
) ON COMMIT PRESERVE ROWS;
INSERT INTO tbl VALUES (201602);
INSERT INTO tbl VALUES (201612);
Я хотел бы добавить два "месяца" и вернуть:
201604
201702
Я предполагаю, что приведение в некотором роде необходимо; однако синтаксис меня сбивает с толку.
Первое приведенное ниже решение дает формат даты «мм / дд / гггг». Я добавил второй cast
, что привело к формату «гггг-мм» с дефисом. Я что-то упустил, где этот дефис можно удалить? В противном случае я обернул все это в функцию 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