Превращение пользовательского оператора в код, который активирует - PullRequest
0 голосов
/ 21 июня 2019

Я работаю со смещением даты и пытаюсь «взломать» следующую функцию даты

now() - interval '12 month'

Вместо этого я хочу создать переменное смещение, которое добавляет месяцы к смещению в зависимости отна текущий месяц.У меня есть следующий SQL, который я создал:

SELECT now() ||' - interval ' || 
case when to_char(now(),'MON') in('FEB','MAY','AUG','NOV') then 0
     when to_char(now(),'MON') in('MAR','JUN','SEP','DEC') then 1
     when to_char(now(),'MON') in('JAN','APR','JUL','OCT') then 2
ELSE null END + 12 || ' month' TIME_OFFSET;

Когда я запускаю это, я получаю следующий вывод.

TIME_OFFSET  
2019-06-21 11:15:21 - interval 13 month

Я пытаюсь заставить его запустить эту функциюЯ создал, чтобы дать мне следующий вывод

2018-05-21 11:15:21

Как я могу получить это, чтобы вернуть это?Что мне нужно изменить?

1 Ответ

0 голосов
/ 21 июня 2019

Только что разобрался.

Используйте следующее:

select add_months(now(), (-1 * 
case when to_char(now(),'MON') in('FEB','MAY','AUG','NOV') then 2
     when to_char(now(),'MON') in('MAR','JUN','SEP','DEC') then 0
     when to_char(now(),'MON') in('JAN','APR','JUL','OCT') then 1
ELSE null END) -12);

Дает вам:

ADD_MONTHS
2018-06-21 16:10:52
...