Генерация 3 года - PullRequest
       7

Генерация 3 года

1 голос
/ 12 марта 2019

Пытаясь создать данные за 3 года, как показано ниже

31-DEC-17
31-DEC-18
31-DEC-19

ниже запроса генерирует 3 месяца. Как перенести это на 3 года

select LAST_DAY(add_months(date '2017-01-01', level - 1)) as mth 
        from dual 
        connect by level <= 3

Ответы [ 3 ]

2 голосов
/ 12 марта 2019

Умножить параметр на 12:

select last_day(add_months(date '2017-01-01', (level - 1) * 12 )) as mth 
  from dual 
  connect by level <= 3

демо

1 голос
/ 12 марта 2019

use <= 36, который будет генерироваться до 31-DEC-19 </p>

    select LAST_DAY(add_months(date '2017-01-01', level - 1)) as mth 
        from dual 
        connect by level <= 36
0 голосов
/ 12 марта 2019

Как упоминает @APC, функция last_day зависит от настроек даты NLS.Таким образом, вы можете предпочесть функцию truncate, усеченную до единицы, указанной yyyy, как показано ниже:

select add_months(trunc(date'2017-01-01','yyyy'), level * 12 ) - 1
       as "Last Days"
  from dual 
connect by level <= 3;

Last Days
----------
2017-12-31
2018-12-31
2019-12-31

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...