powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / из даты вычесть год...
12 сообщений из 12, страница 1 из 1
из даты вычесть год...
    #34325832
Тимур Б
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
имеется процедура с входными параметрами-датами(prev,cur)

create procedure res1(in prev date, cur date)

которая передает эти
параметры двум др процедурам с входными параметрами(prev,cur)
необходимо из процедуры temp2 вычесть 1 год

напр если передаем дату '2006-01-01','2006-12-31' то в
процедуре temp2 должно быть '2005-01-01','2005-12-31'

create procedure temp(in prev date,in cur date)

create procedure temp2(in prev date,in cur date)


у кого какие мысли?
...
Рейтинг: 0 / 0
из даты вычесть год...
    #34325869
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
date('01/01/2006') - 1 year
...
Рейтинг: 0 / 0
из даты вычесть год...
    #34328899
Тимур Б
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TORTdate('01/01/2006') - 1 year

хм а как такую конфигурацию можно задать напр при опрераторе

between prev -1 year and cur -1 year
в параметры передается вроде '2006-01-01'
или можно так date(prev)-1 year
как правильно?
...
Рейтинг: 0 / 0
из даты вычесть год...
    #34328921
const64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
experimentum crucis ?
...
Рейтинг: 0 / 0
из даты вычесть год...
    #34329046
Тимур Б
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если я делаю так
create procedure temp(in prev date,in cur date)
...
between date(prev)-1 year and date(cur)-1 year
...
call temp('2006-01-01','2006-12-31')



то результат пуст
но я точно знаю что за 2005 г есть данные
...
Рейтинг: 0 / 0
из даты вычесть год...
    #34329134
Тимур Б
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вообще-то мне надо что-то вроде такого
between ''' || char(date(prev, iso)-1 year) || ''' and ''' || char(date(cur, iso)-1 year) || '''

но на это ругается SQL0182N Неверное выражение, использующее значения даты и времени или
временного интервала. LINE NUMBER=12. SQLSTATE=42816

??что делать??
...
Рейтинг: 0 / 0
из даты вычесть год...
    #34329172
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если у вас
Код: plaintext
create procedure temp(in prev date,in cur date)
то:
Код: plaintext
...||' between ''' || char(prev -  1  year, iso) || ''' and ''' || char(cur -  1  year, iso) || ''''
...
Рейтинг: 0 / 0
из даты вычесть год...
    #34331992
Тимур Б
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще вопросик.
Mark BarinsteinЕсли у вас
Код: plaintext
create procedure temp(in prev date,in cur date)
то:
Код: plaintext
...||' between ''' || char(prev -  1  year, iso) || ''' and ''' || char(cur -  1  year, iso) || ''''


select char(g33a,4), sum(g46) from t_st2005 where g01a='ИМ' and g54d ||' between ''' || char(prev - 1 year, iso) || ''' and ''' || char(cur - 1 year, iso) || '''' group by char(g33a,4) order by char(g33a,4);
ругается
SQL0104N Обнаружен неправильный элемент "group" после текста "1 year, iso) ||
''''". Список правильных элементов: "IS NULL". LINE NUMBER=12.
SQLSTATE=42601
...
Рейтинг: 0 / 0
из даты вычесть год...
    #34335500
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если это динамический SQL, то

Код: plaintext
1.
2.
3.
4.
5.
SET SQL_CMD=
  'select char(g33a,4), sum(g46) '
||'from t_st2005 '
||'where g01a=''ИМ'' '
||'and g54d between ''' || char(prev -  1  year, iso) || ''' and ''' || char(cur -  1  year, iso) 
||''' group by char(g33a,4) order by char(g33a,4) ';
...
Рейтинг: 0 / 0
из даты вычесть год...
    #34335554
Тимур Бимеется процедура с входными параметрами-датами(prev,cur)

create procedure res1(in prev date, cur date)

которая передает эти
параметры двум др процедурам с входными параметрами(prev,cur)
необходимо из процедуры temp2 вычесть 1 год

напр если передаем дату '2006-01-01','2006-12-31' то в
процедуре temp2 должно быть '2005-01-01','2005-12-31'



На чем написана процедура res1?

Если на SQL, то
с той же датой:
call temp1(prev,cur);
С вычитанием года:
call temp2(prev-1 year, cur -1 year);
...
Рейтинг: 0 / 0
из даты вычесть год...
    #34335598
Тимур Б

хм а как такую конфигурацию можно задать напр при операторе

between prev -1 year and cur -1 year
в параметры передается вроде '2006-01-01'
или можно так date(prev)-1 year
как правильно?

Вот так например замечательно работает:
select * from DATES where date1 between (date('2007-01-01')-1 year) and date('2007-01-01');
Аналогично можно и в хранимой SQL.
Если prev и cur типа DATE, то просто
between (prev -1 year) and (cur -1 year)
...
Рейтинг: 0 / 0
из даты вычесть год...
    #34339840
Тимур Б
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем !
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / из даты вычесть год...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]