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

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

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

CookBook by Graeme Birchall, есть примеры и описание.
...
Рейтинг: 0 / 0
20.01.2009, 17:48
    #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
20.01.2009, 17:58
    #35767835
Vladimir Kiselev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сдвиг даты на год-месяц-день
jack_nsk,

Сдвиг на один месяц и год
Код: plaintext
1.
VALUES( CURRENT DATE +  1  months +  1  year )
на выходе
Код: plaintext
 20 . 02 . 2010 
...
Рейтинг: 0 / 0
20.01.2009, 18:17
    #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
20.01.2009, 18:36
    #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
20.01.2009, 18:49
    #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
20.01.2009, 18:54
    #35767958
jack_nsk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сдвиг даты на год-месяц-день
Vladimir Kiselev
CookBook by Graeme Birchall, есть примеры и описание.

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

хотя на сайте ибм есть для начала достаточно информации...
...
Рейтинг: 0 / 0
20.01.2009, 19:05
    #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
20.01.2009, 19:24
    #35767997
Vladimir Kiselev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сдвиг даты на год-месяц-день
...
Рейтинг: 0 / 0
20.01.2009, 19:43
    #35768010
jack_nsk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сдвиг даты на год-месяц-день
вопрос насчет возврата результатов селекта...
что более предпочтительнее в дб2 для этого -
выборка в cursor и потом fetch в переменные,
или
применение select into
?
это дело предпочтения или первый вариант более отказоустойчив ?

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

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


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