Sql Запрос
INSERT INTO mn(Tip, Number, BNumber,Call_date, Call_time, Call_min, KVP)
select cast(z.Tip as int) as tip ,
cast(z.ANumber as int)-4600000 as number,
cast (z.bnumber as char(15)),
cast( substring(z.cdate from 7 for 2)||'.'|| substring(z.cdate from 5 for 2)||'.'|| substring(z.cdate from 1 for 4) as date) as call_date,
cast( substring(z.ctime from 1 for 2) ||':'|| substring(z.ctime from 3 for 2)
||':'|| substring(z.ctime from 5 for 2) as time) as call_time,
cast (dcall as int) as call_min,
cast (z.kvp as int) as kvp
from "d:\\__\\D0331WUK.DBF" z where cast(anumber as numeric) >4626000 and cast(anumber as int) <4630000
При выполнении пишет что типы не соответствуют, хотя они полность совпадают с структурой mn. В чем дело?
tip number bnumber call_date call_time call_min kvp
1 27778 26120800 31.03.2004 03:11:41 49 261
Чтобы это работало, таблица должна отвечать следующим условиям:
* Она должна уже быть создана командой CREATE TABLE.
* Тимпы столбцов должны совпадать ( причем
они не должны иметь одинаковых имен ).
Только вот cast( substring(z.ctime from 1 for 2)||':'||
substring(z.ctime from 3 for 2)||':'||
substring(z.ctime from 5 for 2) as time)
конвертит в time а записывать не хочет.
Какой должен быть формат time для записи в paradox базу?
Я уже нашел ошибку.
Чтобы это работало, таблица должна отвечать следующим условиям:
* Она должна уже быть создана командой CREATE TABLE.
* Тимпы столбцов должны совпадать ( причем
они не должны иметь одинаковых имен ).
Это уж по-любому :)
Только вот cast( substring(z.ctime from 1 for 2)||':'||
substring(z.ctime from 3 for 2)||':'||
substring(z.ctime from 5 for 2) as time)
конвертит в time а записывать не хочет.
Какой должен быть формат time для записи в paradox базу?
С парадоксом через SQL я не работал, но вообще по опыту работы с датами могут быть следующие варианты:
1. Попробуй заключить твое значение в апострофы, должно получиться '13:15:47'
2. Вполне возможно, что парадокс хранит время в другом формате, отличном от отечественного (в 12-часовом формате например)
3. Возможно, он хранит его вообще в виде double, которое означает кол-во секунд, прошедших с фиксированной даты (например, с 01.01.1970 00:00:00)
Более конкретного ничего посоветовать не могу, это зависит от самой базы и инструментов, которыми ты пихаешь в нее значения.
или
С парадоксом через SQL я не работал, но вообще по опыту работы с датами могут быть следующие варианты:
1. Попробуй заключить твое значение в апострофы, должно получиться '13:15:47'
2. Вполне возможно, что парадокс хранит время в другом формате, отличном от отечественного (в 12-часовом формате например)
3. Возможно, он хранит его вообще в виде double, которое означает кол-во секунд, прошедших с фиксированной даты (например, с 01.01.1970 00:00:00)
2. Это настраивается в БДЕ
3. Это вы про Timestamp поле пишите.
1. Как в sql вставить символ '
2. Это настраивается в БДЕ
3. Это вы про Timestamp поле пишите.
1. Как в sql вставить символ '
2. Хорошо
3. Я же не знаю описания полей твоей БД
1. Попробуй сделать так:
и тогда поймешь, как это делается :)