问题描述:
    这是我的存储过程
CREATE PROCEDURE  p1
(
@b_id     varchar(10),
@b_title  varchar(50) ,
@user  varchar(20),
@b_state  varchar(20) ,
@b_time1 datetime,
@b_time2 datetime,
@str  varchar(50)
)
 AS
declare @lsStr as varchar(1024)
 set  @lsStr ='  select  *  from  T_User,T_Blog  where  T_User.userID = T_Blog.userID ' 
 set  @lsStr = @lsStr +  'and blogID like '+ @b_id + '  and T_Blog.title like  '  + @b_title+ '  and  T_Blog.status like  ' +@b_state+ '  and  T_User.usernick  like '+ @user 
  set  @lsStr = @lsStr + '  and  pubtime > '+ @b_time1 +'  and pubtime <  '  + @b_time2  + '  '+  @strexec (@lsStr)
GO
在程序中就是按照一般的程序进行的当我执行该存储过程的时候,出现一个错误: 大意是说讲字符串转换成datetime类型时出现错误。不是有效的时间格式之类的。请问如何解决。

解决方案 »

  1.   

    试试用函数吧
    我用的oracle数据库
    将时间类型这样再转一次:to_date(@b_time1,'yyyy-mm-dd 24hh:mi:ss')
      

  2.   

    时间问题,你是怎么传过来的,C#里面有ToShortDateString(),ToLongDateString()等等的,另外就是要用到Convert.ToDateTime()函数
      

  3.   

    字符串+日期等于什么?
    所以你要将@b_time1 转换为字符串加进去。
      

  4.   

    to 大意是说讲字符串转换成datetime类型时出现错误。不是有效的时间格式之类的。不能直接转换,需要调用sql server提供的方法,例如
    CONVERT( @b_time2, varchar(20), 110 )