преобразование varchar в smalldatetime приводит к значению вне допустимого диапазона - PullRequest
3 голосов
/ 10 июля 2009

код:

strSql = "insert into table2 (transactiondate) values ('" & transactiondate & "')"

, похоже, выдает ошибку времени выполнения:

The conversion of a varchar data type to a smalldatetime data type resulted in an out-of-range value

В коде strSql является объектом String, а транзакция date является объектом Date. Однако в базе данных SQL транзакция - это объект smalldatetime.

Я попытался изменить smalldatetime на datetime (в базе данных), и я попытался транзакцииdate.toString (), но безуспешно.

Как это можно исправить?

Примечание: я знаю об опасностях встроенного SQL. Я ищу решение для быстрого исправления здесь, а не обсуждение внедрения SQL.

Ответы [ 4 ]

6 голосов
/ 10 июля 2009

Попробуйте добавить одинарные кавычки в оператор вставки.

strSql = "insert into table2 (transactiondate) values ('" & transactiondate & "')"
3 голосов
/ 11 июля 2009

Два возможных ответа:

  1. Вам нужно заключить строку в апостроф:

strSql = "insert into table2 (transactiondate) values ('" & transactiondate & "')"

  1. Вы используете дату до 01.01.1900 или после 06.06.2079 (ограничения smalldatetime)
0 голосов
/ 16 ноября 2012

Smalldatetime может принимать значения только для лет> 1900 и <2079. У меня была ошибка, похожая на ту, которую вы опубликовали, где решением было отфильтровать недействительные годы, подобные </p>

where year(datecolumn) < 2079
0 голосов
/ 07 мая 2010

Используйте транзакцию date.ToString ("гггг / мм / дд чч: мм: сс") или предпочитаемый формат даты. Если это так, замените язык пользователя по умолчанию «sa» или любого другого пользователя, которого вы используете, на предпочитаемый вами язык.

...