v7: Как в ВыполнитьSQL_ИзТЗ передать DATETIME? #691262


#0 by toypaul
Как в 1C++ в методе ВыполнитьSQL_ИзТЗ в таблице передать datetime (дату и время)? Как строку 1998-09-24 10:02:20 передать не получается.
#1 by МихаилМ
получается . скорее всего Вы наступили на грабли: в скл >=2008 поменялся формат представления литерала даты
#2 by Mikeware
у меня тоже не получалось, на 2000. передавай как строку и кастуй к datetime в замом запросе
#3 by Sorm
Передавай как обычно "yyyyMMddhhmmss"
#4 by Mikeware
попробовал. не получилось
#5 by Sorm
Сорри, ошибся. Однако тоже. Что за ..? Ща разберемся.
#6 by toypaul
у меня 2000 сервер. есть мысль, что в 1С++ идет преобразование строки к дате некорректно. то есть 1С++ смотрит что поле datetime и думает (ИМХО) что будет передаваться тип Дата. ну и следовательно выдается ошибка Неверный параметр дата.
#7 by toypaul
пробовал в параметрическом запросе писать как VALUES(?,?,CONVERT(DATETIME,?),?) так выдает другую ошибку. видимо придется делать построчную вставку ...
#8 by Sorm
Хммм.. работает и 'yyyy-MM-dd hh:mm:ss' и 'dd-MM-yyyy hh:mm:ss'.
#9 by toypaul
код какой?
#10 by toypaul
у меня такой не работает
#11 by toypaul
ой. это я уже переделывал.
#12 by toypaul
вот такой код
#13 by toypaul
#14 by toypaul
пля ... ну я тупой
#15 by toypaul
хотя один фиг. перепутал дату с месяцем - всеравно месяц за 12 не вылазит...
#16 by МихаилМ
а где описание параметров ?
#17 by toypaul
RecordSet.ВыполнитьSQL_ИзТЗ(ТабЛога); {E:PROJECTS1CV7***ТИСEXTFORMSОБМЕНУРБД.ERT}: Произошла ошибка при выполнении запроса.                   State 22007, native 0, message [Microsoft][ODBC SQL Server Driver]Недопустимый формат времени
#18 by toypaul
я с 1С++ не дружу. про какое описание параметров речь?
#19 by toypaul
если писать как в , то работает без всякого описания параметров
#20 by Mikeware
ДобПараметр(<?>) AddParam(<?>) Синтаксис: ДобПараметр(<IOType>,<nSQLType>,<nLen>,<nDec>,<pname>) Назначение: добавляет описание параметра для параметризированного запроса. Параметры: <nDec> - (Число)  точность <pname> - (Строка)  Необязательный параметр.   именованный параметр вида Par1, необязательный параметр.
#21 by Mikeware
Но с ним тоже не работало
#22 by toypaul
тынц
#23 by Sorm
Профайлер запусти, посмотри, что там тебе 1с++ пытается с датой сделать.
#24 by toypaul
да ничего не пытается. ошибка видимо возникает до отправки запроса на сервер.
#25 by Serginio1
#26 by Serginio1
Проще сделать Insert в цикле. ТекстЗапроса = "insert into #ВидДок (Vid,ID36,ID10) values ('"+Вид+"','"+ИД36+"',"+ИД10+")"; рс.Выполнить(ТекстЗапроса)
#27 by Дык ё
10 это SQL_TYPE_TIMESTAMP, это одибисишный тип который для MSSQL соответствует типу datetime, а не timestamp. Дело в том, что следующим параметром необходимо указать длину буфера в байтах, которая должна быть не меньше длины структуры SQL_TIMESTAMP_STRUCT. Т.е. так надо: (c) DmitrO
#28 by toypaul
хитро. но уже сделал запрос в цикле :)
#29 by Jaap Vduul
А я бы вот так сделал и не парился: alter table dbo.log add constraint log_eventdate_def default getDate for eventdate
#30 by КонецЦикла
А что нельзя самому построчно засунуть?
#31 by Ёпрст
#32 by toypaul
спасибо. попробую. пробовал искать на 1спп форуме, но видимо как-то не так искал. искал по ВыполнитьSQL_ИзТЗ - вообще ничего не нашло
#33 by toypaul
да работает. видимо все-таки надо было добавить параметр правильно ... ну и cast
#34 by Ёпрст
заметь, кто вопрос там спрашивал :)
#35 by toypaul
:)
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С