3

编码:

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 对象,transactiondate 是一个 Date 对象。然而,在 SQL 数据库中,transactiondate 是一个 smalldatetime 对象。

我尝试将 smalldatetime 更改为日期时间(在数据库中),并且尝试了 transactiondate.toString() 但没有成功。

如何解决这个问题?

注意:我知道内联 SQL 的危险。我在这里寻找一个快速修复解决方案,而不是关于 SQL 注入的讨论。

4

4 回答 4

6

尝试在插入语句中添加单引号。

strSql = "insert into table2 (transactiondate) values ('" & transactiondate & "')"
于 2009-07-10T19:57:32.517 回答
3

两个可能的答案:

  1. 您需要将字符串封装在撇号中:

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

  1. 您使用的日期在 1900 年 1 月 1 日之前或 2079 年 6 月 6 日之后(的限制smalldatetime
于 2009-07-10T20:00:11.547 回答
1

Smalldatetime 也只能接受年份 > 1900 和 < 2079 的值。我有一个与您发布的错误类似的错误,解决方案是过滤掉这样的无效年份

where year(datecolumn) < 2079
于 2012-11-15T22:04:19.287 回答
0

使用 transactiondate.ToString("yyyy/MM/dd HH:mm:ss") 或您喜欢的日期格式。如果仍然存在,请将“sa”用户默认语言或您使用的任何用户更改为您喜欢的语言。

于 2010-05-07T12:26:11.977 回答