Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» InterBase и FireBird: вопросы по работе и их решение

Автор: volser
Дата сообщения: 27.10.2009 11:21
DmitryKz
IBExpert умеет выгружать данные в скрипт.
Автор: jonikDk
Дата сообщения: 27.10.2009 12:05
DmitryKz
через ibexpert
Автор: SIgor33
Дата сообщения: 28.10.2009 16:44
Вопрос такой по ковертации данны из InterBase в mssql.
В InterBase поле дата рождения а в не дата храниться в виде integer а хотелось бы в виде Datetime
Автор: volser
Дата сообщения: 28.10.2009 17:10
SIgor33
Ничего не понял, перечитал три раза
Автор: SIgor33
Дата сообщения: 28.10.2009 17:49
volser
Хочу из InterBase перегнать данные в MS SQL Server. База в ней куча таблиц есть таблица person там поле дата рождения а в нем когда открываю с помощью EMS Interbase manger вижу такое 40237 я как понял это integer, а я хочу перегнать чтобы было например 12.03.1976 то есть тип datetime
Автор: volser
Дата сообщения: 28.10.2009 18:03
SIgor33
Например так,

Код: SELECT CAST('11.01.1866' AS DATE) + 40237 FROM RDB$DATABASE
Автор: X11
Дата сообщения: 28.10.2009 18:11
Пиши запросы с помощью CAST - преобразуй целое число в дату
Автор: volser
Дата сообщения: 28.10.2009 19:07
X11
А какой есть еще способ, кроме того что я предложил, используя CAST?
Автор: X11
Дата сообщения: 28.10.2009 19:28

Код: SELECT CAST(field1 AS DATE) FROM table1
Автор: volser
Дата сообщения: 28.10.2009 19:43
X11
И что работает?
Автор: X11
Дата сообщения: 29.10.2009 00:47
http://www.firebirdsql.su/doku.php?id=cast
Обрати внимание на табличку, там исходный тип есть NUMERIC. Неужели если в моём примере field1 является целочисленным, то CAST(field1 AS DATE) не прокатит
Автор: SIgor33
Дата сообщения: 29.10.2009 09:19
volser
Извени меня, но я Вас не совсем понял выснала строку перевели в дату и к ней добавили число разве это прокатит.
В MSSQL я могу сделать так

SELECT CAST( Data_R as datetime) as date from DB
Но при этом получается на не которых записях какие-то безумные даты например
20.10.2055 и самое главное их слишком много я не думаю что ввели с большим количеством ошибок , а кажется мне что это в том что InterBase как то их хитро хранит
Автор: volser
Дата сообщения: 29.10.2009 11:31
X11
У меня на 1.5.5 не работает.

SIgor33
Если есть интовое значение, то это количество дней от какой то даты. Для этого я беру дату отсчета и прибавляю количество дней.
Автор: X11
Дата сообщения: 29.10.2009 11:52
Да, с integer не хочет, а с NUMERIC работает
Если Data_R будет поле типа NUMERIC, то такой запрос

SELECT CAST(Data_R as datetime) as date from DB

нормально отработает

Добавлено:

Цитата:
Для этого я беру дату отсчета и прибавляю количество дней.

Начальная дата (дата отсчёта) уже заложена в Firebird
Автор: volser
Дата сообщения: 29.10.2009 12:28
X11

Цитата:
а с NUMERIC работает

Какая должна быть точность? NUMERIC(15,2) - не работает.

Цитата:
Начальная дата (дата отсчёта) уже заложена в Firebird

Это еще не значит что она совпадает с датой отсчета в колонке. Может я хочу хранить количество дней начиная с 01.01.2000.

С какой даты идет отсчет в ФБ?
Автор: OXDBA
Дата сообщения: 29.10.2009 13:10

Цитата:
Какая должна быть точность? NUMERIC(15,2) - не работает.

И не должна, в касте дата/время не может быть преобразована в/из smallint, integer, float, double, numeric, decimal, blob (С) Хелен Борри.

Цитата:
С какой даты идет отсчет в ФБ?

17 ноября 1898 г
Автор: X11
Дата сообщения: 29.10.2009 13:50

Цитата:
в касте дата/время

а в касте ДАТА?

Добавлено:

Цитата:
Какая должна быть точность? NUMERIC(15,2) - не работает.

я понял, пока не было данных запрос работал, как только добавил в поле данные - сразу convertion error.
Нужно статью подправить на
http://www.firebirdsql.su/doku.php?id=cast
Автор: OXDBA
Дата сообщения: 29.10.2009 14:05

Цитата:
а в касте ДАТА?

DATE, TIME, TIMESTAMP (естественно речь идет о 3 диалекте) не могут участвовать в преобразованиях в/из указанных выше типов.
Автор: SIgor33
Дата сообщения: 29.10.2009 15:04
X11
Хорошо я просто не знал о таких заморочках у interbase. что нужно брать начальную дату
Автор: X11
Дата сообщения: 29.10.2009 15:33
Речь идёт про Firebird. В последние годы эти два проекта уже значительно отличаются.
Автор: SIgor33
Дата сообщения: 30.10.2009 09:22
X11
Спасибо за уточнение
Автор: SIgor33
Дата сообщения: 07.12.2009 13:56
подскажите можно ли в Interbase как в mssql сделать запрос чтобы выбрать слова содержащие английские буквы по маске на пример
LIKE '%[a-z]%'
Автор: data man
Дата сообщения: 07.12.2009 16:21
SIgor33

Именно в Interbase нужно ?
В Interbase можно сделать при помощи UDF.

А в Firebird 2.5 и выше можно использовать конструкцию:

Код: [NOT] SIMILAR TO <similar pattern> [ ESCAPE <escape character> ]
Автор: SIgor33
Дата сообщения: 08.12.2009 08:26
data man
Огромное спасибо. все понял
Автор: SIgor33
Дата сообщения: 09.12.2009 15:28
Скажите Interbase команда sql top подерживается
а то у меня в запросе
select top 10
fam, ima, dr from user
ругается на неверный синтаксис
Автор: X11
Дата сообщения: 09.12.2009 15:50
select first 10
Автор: SIgor33
Дата сообщения: 10.12.2009 08:10
X11
Спасибо за совет
Автор: OXDBA
Дата сообщения: 10.12.2009 11:52
SIgor33
Начиная с FB2.0, согласно рекомендациям стандарта SQL, рекомендуется использовать ROWS вместо FIRST.
select ...
from ...
rows 10
Автор: SIgor33
Дата сообщения: 10.12.2009 16:52
OXDBA
А interbase что лучше rows или first?
Автор: OXDBA
Дата сообщения: 11.12.2009 10:23
SIgor33
Извини, не посмотрел что у тебя IB точно не скажу, ибо забросил IB начиная с v5.6, но повторюсь, по рекомендациям стандарта - ROWS

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465

Предыдущая тема: Сравнение двух строк


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.