Текущий архив: 2002.11.11;
Скачать: CL | DM;
Внизconversion from string Найти похожие ветки
← →
Blunder (2002-10-18 21:22) [0]IB 5
Проблема в следующем. было поле для хранения дат типа VARCHAR(10)
с помощью
update RDB$FIELDS set
RDB$FIELD_TYPE = 35,
RDB$FIELD_LENGTH = 8,
RDB$CHARACTER_LENGTH = NULL,
RDB$CHARACTER_SET_ID = NULL
where RDB$FIELD_NAME = "RDB$106"
превратил это поле в DATE,всё прошло успешно, но как выяснилось в этом поле хранились некорректные данные для некоторых записей типа "31.02.2002" или "20.14.2000"
в DATE все преобразовалось, но DATE с такими косяками естественно не дружит и теперь при любом обращении к записям с таким косяком естественно вылазит invalid conversion from string.
Что делать таким же способом в VARCHAR(10) переделать тоже не дает видимо по той же причине.
← →
Anatoly Podgoretsky (2002-10-18 21:43) [1]Определи эти записи и запиши в них нормальные даты
← →
Blunder (2002-10-18 21:56) [2]не могу, записи определил, при любой попытке обращения к ним говорит conversion from string.
← →
Anatoly Podgoretsky (2002-10-18 22:00) [3]А ты пробовал для этой записи сделать UPDATE
← →
Blunder (2002-10-18 22:07) [4]обижаешь :)) конечно пробовал пишет всё ту же фразу, если бы не это я бы в форум не писал бы, может можно как то его обратно к варчару привести исправить и вернуть ???
← →
Anatoly Podgoretsky (2002-10-18 22:09) [5]Тогда попытка удаления или скажем ремонта базы, вроде бы есть такая утилита.
← →
Blunder (2002-10-19 00:01) [6]ни фига с этим полем не делается кроме drop :(((
← →
Johnmen (2002-10-19 01:54) [7]Это называется "Доигрался хрен на скрипке" !
Вот ответь, какого ... тебя понесло в системные таблицы ?
Что, по-хорошему не мог решить проблему ?
← →
Anatoly Podgoretsky (2002-10-19 11:54) [8]Делаем резюме
Просмотреть нельзя
Изменить нельзя
удалить нельзя
ремонту не поддается
Делаем вывод
таблицу или поле в могилу
Причина
Johnmen © (19.10.02 01:54)
← →
kaif (2002-10-19 20:28) [9]Напиши специальное приложение, которое одну за другой запрашивает записи из этой таблицы (по одной). Для тех записей, что прочитались - копирует дату в нормальное поле даты (создай его). Для тех, что дали сбой при чтении в секции try-except-end обходи эту ошибку, чтобы цикл не вылетал. Если у тебя даже миллион записей, то за час машина справится с такой задачей.
Затем удали старое поле с помощью DROP.
Приложение пишется за 5 минут. Овчинка выделки стоит.
← →
Blunder (2002-10-21 19:46) [10]я уже почти так и сделал, только я UDF написал которая получает дату, проверяет её на правильность и если правильная то возвращает, а если не то присваивает значение 01.01.1000 и
потом сделал alter table FOLDERS add TMP date computed by (datecorr(FOLDER_date));
DATECORR это UDF.
Вобщем всё получилось, большое спасибо за подсказки.
← →
kaif (2002-10-22 12:04) [11]Ты нашел более красивое решение.
Страницы: 1 вся ветка
Текущий архив: 2002.11.11;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.007 c