错误异常>数据库>Sql Server
Sql Server 2012里面执行插入数据得程序,报错:
消息 8116,级别 16,状态 1,第 35 行 参数数据类型 datetime 对于 substring 函数的参数 1 无效。 消息 8116,级别 16,状态 1,第 40 行 参数数据类型 datetime 对于 substring 函数的参数 1 无效。
SQL语句如下:
Insert into TestTable values(@UserId,1,0,1,0,0,0,0,0,0,substring(@CreateTime,1,7),0)
可以考虑把@CreateTime转为字符串类型后再传给substring函数,如下:
Insert into TestTable values(@UserId,1,0,1,0,0,0,0,0,0,substring(Cast(@CreateTime As Varchar(20)),1,7),0)
Substring函数说明如下:
语法:SUBSTRING ( expression ,start , length )
参数说明:
参数:
expression
为 character、binary、text、ntext 或者 image 表达式 。
start
指定返回字符的起始位置的整数或 bigint 表达式 。 (编号从 1 开始,意味着表达式中的第一个字符为 1)。 如果 start 小于 1,则返回的表达式的起始位置为表达式中指定的第一个字符 。 在这种情况下,返回的字符数是后两者中的较大值:start + length 之和减去 1,0。 如果 start 大于值表达式中的字符数,将返回一个零长度的表达式 。
length
是正整数或用于指定要返回的 expression 的字符数的 bigint 表达式 。 如果 length 是负数,会生成错误并终止语句 。 如果 start 和 length 的总和大于表达式中的字符数,则会返回从 start 开始的整个值表达式 。