Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Date in 'ddMMyy' format and between function? / 7 сообщений из 7, страница 1 из 1
21.06.2007, 18:23
    #34611992
riman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Date in 'ddMMyy' format and between function?
Всем привет. Есть колонка, в которой хранится строка, являющаяся датой в формате 'ddMMyy'.
Как написать селект который бы выбирал строки между любыми двумя заданными датами?
Пробовал написать функцию, которая из 'ddMMyy' делала 'yyyyMMdd' - все работает, но медленно, т.к. DB2 не индексирует по функции.
DB2/400 V5R4.
Спасибо.
...
Рейтинг: 0 / 0
22.06.2007, 05:35
    #34612511
golsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Date in 'ddMMyy' format and between function?
Добавь новую колонку даты в формате 'yyyymmdd' в свою таблицу или создай новую таблицу с такой колонкой и ссылкой на запись существующей таблицы. Сделай по этому полю индекс. Заполнять/изменять поле - тригерами. Без индекса всеравно будет полное сканирование.
...
Рейтинг: 0 / 0
22.06.2007, 06:53
    #34612544
riman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Date in 'ddMMyy' format and between function?
not a proprietary database. Повесить триггер не удастся, хотя создать другую табличку рядом - можно. Можно конечно создать pull-репликацию, но не очень хочется.
...
Рейтинг: 0 / 0
22.06.2007, 16:30
    #34614289
riman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Date in 'ddMMyy' format and between function?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
create function parseDate(TS varchar( 10 ))
returns VARCHAR( 20 )
LANGUAGE SQL
READS SQL DATA
NO EXTERNAL ACTION
DETERMINISTIC
return case when substr(TS,  5 ,  2 )>right(digits(year(current timestamp -  80  years)),  2 )
    then '19' || substr(TS,  5 ,  2 ) || substr(TS,  3 ,  2 ) || substr(TS,  1 ,  2 )
    else '20' || substr(TS,  5 ,  2 ) || substr(TS,  3 ,  2 ) || substr(TS,  1 ,  2 ) end;
...
Рейтинг: 0 / 0
22.06.2007, 16:33
    #34614296
riman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Date in 'ddMMyy' format and between function?
Блин! Чертов кнтрл+энтер на форуме иногда мешает.
Короче. Приведенная функция переводит 'ddMMyy' к 'yyyyMMdd' виду. Вызов этой функции в селекте вызывал огромные тормоза. Если в селекте вместо вызова функции написать тело самой функции, то запрос обрабатывается в 40 раз быстрее.
Почему такая разница?
...
Рейтинг: 0 / 0
25.06.2007, 15:10
    #34617662
RomanSavelyev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Date in 'ddMMyy' format and between function?
rimanЕсли в селекте вместо вызова функции написать тело самой функции, то запрос обрабатывается в 40 раз быстрее.
Почему такая разница?
Пути оптимизатора на DB2/400 неисповедимы.
Попробуйте натянуть на таблицу VIEW с сей могучей формулой. Или логические файлы тож добавлять в базу нельзя?

P.S. Чтоб авторам структуры данных хорошо жилось!
...
Рейтинг: 0 / 0
25.06.2007, 15:21
    #34617719
riman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Date in 'ddMMyy' format and between function?
RomanSavelyevПути оптимизатора на DB2/400 неисповедимы.
Попробуйте натянуть на таблицу VIEW с сей могучей формулой. Или логические файлы тож добавлять в базу нельзя?

P.S. Чтоб авторам структуры данных хорошо жилось!

Логические файлы можно добавить. Мы так и сделали.
Авторы уже давно в гавайских рубашках песочек с ладоней пересыпают :)
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Date in 'ddMMyy' format and between function? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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