Имя: Пароль:
1C
1C 7.7
v7: Не могу получить значение поля TIME
,
0 vsy
 
19.12.22
11:16
К знатокам Firebird.
Из 1с через ADO записываю и получаю значения из базы Firebird
В базе есть поле с типом TIME. Из 1с записываю в это поле в формате 00:00:00.0000, а при считывании этого поля получаю ерунду.
Пробовал так select cast(t as char(13)) from table и так select cast(t as time) from table.
В IBExpert и тот и другой вариант возвращают нормальное время. Помогите понять где косяк.
1 Fedor-1971
 
19.12.22
11:47
(0) БД возвращает цифру или таки структуру с частями даты?
2 1Сергей
 
19.12.22
11:54
(1) СОМ-объект :)
3 vsy
 
19.12.22
12:27
(1)Возвращает текущую дату
4 Fedor-1971
 
19.12.22
13:13
(3) тогда нужно рыть в сторону ADO - возможно, что как-то влияет драйвер
5 vsy
 
19.12.22
13:28
(4) Как драйвер может влиять? С поля которое дата он все нормально возвращает, да и с кучи других полей с разными типами данных возвращает все нормально.Была проблема с типом BLOB (binary), но это решилось.На ровном месте какая то непонятка.
6 Fedor-1971
 
19.12.22
13:42
(5) Возможно, что драйвер может возвращать данные из поля в виде числа секунд или строки даты с универсальной датой
Попробуй проверить отладчиком "сырой" возврат данных, например, через JS скрипт (или из 1С 8).
7 vsy
 
19.12.22
13:53
(5) Если бы поле было типом timestamp тогда да. Самое интересное что один и тот же запрос через ado и непосредственно в базе sql выдает разный результат. в sql возвращается время, через ado текущая дата. Я прочитал что тип TIME содержит только время, это касается диалекта 3. Я вначале на это грешил, что записываю туда без даты, но это не так.
8 AAA
 
19.12.22
13:54
Посмотри в отладчике тип значения поля
9 vsy
 
19.12.22
13:55
тип TIME
10 vsy
 
19.12.22
13:55
это в самой базе, сейчас посмотрю в отладчике.
11 vsy
 
19.12.22
13:59
Возвращет тип дата
12 vsy
 
19.12.22
14:18
Все нашел ошибку. Всем спасибо.
13 1Сергей
 
19.12.22
14:56
(12) не так быстро. А объяснить потомкам?
Независимо от того, куда вы едете — это в гору и против ветра!