Я пытаюсь отобразить 12 месяцев из 5 лет назад в марте. Единственный способ, которым я могу это исправить, это:
select to_char(add_months(sysdate, level-51),'YYYY-MM')
from dual
connect by level <= 12
Какой дисплей:
2014-03
2014-04
2014-05
...
Однако мне нужно свидание.
Но попытка использования:
select to_date(to_char(add_months(sysdate, level-51),'YYYY-MM'),'YYYY-MM')
from dual
connect by level <= 12
Укажите месяцы:
2014-03-01
2014-04-01
2014-05-01
...
Вопрос Есть ли у кого-нибудь решение?
РЕДАКТИРОВАТЬ:
Делает
alter session set nls_date_format='YYYY-MM';
Устраните проблему, но как установить этот формат в хранимой процедуре?
CROSS JOIN
, используя свою таблицу календаря и свой отдельный EID, вместо цикла for. И почему вы заботитесь о формате типа даты и времени, когда пытаетесь вставить в таблицу? После вставки это просто тип даты и времени, и он будет иметь все части: год, месяц, день, час, минута, секунды. Найдите и узнайте больше о типе данных oracle DATE. Так что вам нужно толькоSELECT TRUNC(ADD_MONTHS(SYSDATE, LEVEL-51), 'MM') FROM dual CONNECT BY LEVEL <= 12
- person Pham X. Bach   schedule 23.05.2018