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

есть подобный встроенный механизм в дб2 ?
или нужно самому писать ХП или функцию,
которая будет выполнять этот функционал ?
тем более, что нужно не получить дату 31.02.2009 от 31.03.2009 :)
...
Рейтинг: 0 / 0
сдвиг даты на год-месяц-день
    #35767661
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
values date('31.03.2009') -  1  month
...
Рейтинг: 0 / 0
сдвиг даты на год-месяц-день
    #35767662
Vladimir Kiselev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
jack_nsk,

Код: plaintext
1.
2.
SELECT CRDATE -  1  day -  2  months
FROM TABLE;

CookBook by Graeme Birchall, есть примеры и описание.
...
Рейтинг: 0 / 0
сдвиг даты на год-месяц-день
    #35767785
jack_nsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо!

т.е., насколько я правильно понял,
то лотусовая директива
@Adjust (@Today;-0;-1;-1;0;0;0)
(сдвиг на 1 месяц и 1 год)
будет выглядеть примерно так ?

month_shift = 1;
day_shift = 1;
my_date = CRDATE - dayshift day - month_shift month;
или должны быть какие-то операторы, например
my_date = CRDATE - dayshift*day - month_shift*month;
...
Рейтинг: 0 / 0
сдвиг даты на год-месяц-день
    #35767835
Vladimir Kiselev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
jack_nsk,

Сдвиг на один месяц и год
Код: plaintext
1.
VALUES( CURRENT DATE +  1  months +  1  year )
на выходе
Код: plaintext
 20 . 02 . 2010 
...
Рейтинг: 0 / 0
сдвиг даты на год-месяц-день
    #35767891
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
jack_nskт.е., насколько я правильно понял,
то лотусовая директива
@Adjust (@Today;-0;-1;-1;0;0;0)
(сдвиг на 1 месяц и 1 год)
будет выглядеть примерно так ?

month_shift = 1;
day_shift = 1;
my_date = CRDATE - dayshift day - month_shift month;
или должны быть какие-то операторы, например
my_date = CRDATE - dayshift*day - month_shift*month;В db2 нет понятия "директива".
Где вы собираетесь использовать этот код?
В каком-то языке программирования, из которого есть доступ к базе, в sql процедуре (функции)?
...
Рейтинг: 0 / 0
сдвиг даты на год-месяц-день
    #35767935
jack_nsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
внутри хранимой процедуры,
в качестве подготовки параметров для последующего запроса...

например

SELECT TABLE_shifts.day_shift,TABLE_shifts.month,TABLE_shifts.year
into :shift_day,:shift_month,:shift_year
FROM TABLE_shifts
where TABLE_shifts.id = 15647;

my_shift_date = VALUES( CURRENT DATE - shift_day day - shift_month month - shift_year year );
...
Рейтинг: 0 / 0
сдвиг даты на год-месяц-день
    #35767950
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
jack_nsk,

Код: plaintext
1.
2.
3.
4.
5.
6.
create procedure test_date(in_dt date, shift_day int, shift_month int, out my_shift_date date)
begin
  set my_shift_date = in_dt + shift_day days + shift_month months;
end@

call test_date('31.03.2009', - 10 ,  2 , ?)@
...
Рейтинг: 0 / 0
сдвиг даты на год-месяц-день
    #35767958
jack_nsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vladimir Kiselev
CookBook by Graeme Birchall, есть примеры и описание.

с месяц назад пытался найти книгу по дб2...
на всех инет-магазинах одно и тоже -
"в наличии нет, закажите"

хотя на сайте ибм есть для начала достаточно информации...
...
Рейтинг: 0 / 0
сдвиг даты на год-месяц-день
    #35767978
jack_nsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinsteinjack_nsk,

Код: plaintext
1.
2.
3.
4.
5.
6.
create procedure test_date(in_dt date, shift_day int, shift_month int, out my_shift_date date)
begin
  set my_shift_date = in_dt + shift_day days + shift_month months;
end@

call test_date('31.03.2009', - 10 ,  2 , ?)@


спасибо!
хотя немного непривычно после птички...
особенно использование @
...
Рейтинг: 0 / 0
сдвиг даты на год-месяц-день
    #35767997
Vladimir Kiselev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
сдвиг даты на год-месяц-день
    #35768010
jack_nsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вопрос насчет возврата результатов селекта...
что более предпочтительнее в дб2 для этого -
выборка в cursor и потом fetch в переменные,
или
применение select into
?
это дело предпочтения или первый вариант более отказоустойчив ?

сложно выбирать из альтернативы после использования только одного варианта... :)

for
select
from
into
do begin
...
end
...
Рейтинг: 0 / 0
сдвиг даты на год-месяц-день
    #35768402
mustaccio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT INTO работает, только если запрос возвращает единственную запись, иначе - только цикл с FETCH внутре.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / сдвиг даты на год-месяц-день
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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