Я понимаю, что это довольно распространенная проблема, связанная с форумами, но я в недоумении относительно того, что я сделал неправильно здесь.Ошибка преобразования типа данных varchar в datetime с использованием GETDATE()
У меня есть 'Текущий' таблицы что-то вроде:
ID(uniqueidentifier)
Name(nvarchar max)
FileName(nvarchar max)
FileVersion(smallint)
CurrentVersionDate(datetime)
CurrentVersionDate вводится с помощью функции GETDATE() внутри SQLServer.
Когда пользователь нажимает «Создать файл» на моем веб-сайте, детали этой таблицы переносятся в таблицу «История». Поэтому я использую хранимую процедуру для выбора * details из «Current» и сохранения каждого значения в качестве переменной (я использую vb.net в проекте визуальной студии). Я покажу переменную даты, так как это проблема. Я сохраняю это как «дату» переменная:
Dim dDate as Date
dDate = dr("CurrentVersionDate")
Затем я посылаю эти переменные с хранимой процедурой, чтобы войти в «Истории» таблицу:
Execute sp_InsertHistory '" & ID & "','" & strName& "','" & strFile & "','" & intVersion & "','" & dDate & "'"
объявляет переменные даты в хранимая процедура, как:
@Date datetime,
с утверждением вставки:
INSERT INTO History
(ID, Name, FileName, FileVersion, VersionDate)
VALUES
(@ID, @Name, @FileName, @FileVersion, @Date)
Таблица «История» имеет ту же настройку, что и таблица «Текущий». Пройдя через код, эта ошибка ломается:
Error converting data type varchar to datetime
Несомненно, переменные не являются varchar? И даже если это так, строка, безусловно, находится в правильном формате для SQLserver, потому что я просто выбираю значение даты, данное SQL! Любые мысли?
Не конкатенации переменных в строку, установить их в качестве значений параметров команды. См. Http://stackoverflow.com/questions/13014044/sending-parameters-to-stored-procedures-vb-net – flup