CREATE   proc ...
@sort int,
@@pact_time DateTime
AS
DECLARE @ok_time DateTime
if(@sort=1)
begin
set @ok_time=@pact_time
end
if(@sort=2)
begin
set @ok_time=datepart(dd,@pact_time)-3
end
....
INSERT INTO pact(pact_time)
VALUES (@ok_time)
当@sort=1时,@ok_time=1900-01-06,
当@sort=2时,@ok_time=null,
为什么不正确,请各位大哥帮指点

解决方案 »

  1.   


    楼主的条件和存储过程写的不一样呀。稍微修改了下。
    CREATE  proc ... 
    @sort int, 
    @@pact_time DateTime 
    AS 
    select @pact_time = '1900-01-06'  
    DECLARE @ok_time DateTime 
    if(@sort=1) 
    begin 
    set @ok_time=@pact_time 
    end 
    if(@sort=2) 
    begin 
    set @ok_time=dateadd(d,-3,@pact_time) 
    end 
    .... 
    INSERT INTO pact(pact_time) 
    VALUES (@ok_time) 
      

  2.   

    @@pact_time DateTime ?@pact_time DateTime
      

  3.   

    if(@sort=2) 
    begin 
    set @ok_time=dateadd(day,-3,@pact_time) 
    end 
      

  4.   

    时间的加减应该用 dateadd感觉楼主的程序有问题
    set @ok_time=datepart(dd,@pact_time)-3  
    感觉是不是会出现负数呀
      

  5.   

    if(@sort=2) 
    begin 
    set @ok_time=dateadd(day,-3,@pact_time) 
    end 把@sort=2的部分替换成上面的。@ok_time 应该是一个时间,而datepart(dd,@pact_time)-3 是一个整数,类型不匹配
      

  6.   

    CREATE  proc ... 
    @sort int, 
    @@pact_time DateTime 
    AS 
    DECLARE @ok_time DateTime 
    if(@sort=1) 
    begin 
    set @ok_time=@pact_time 
    end 
    if(@sort=2) 
    begin 
    set @ok_time=datepart(dd,@pact_time)-3 
    end 
    .... 
    INSERT INTO pact(pact_time) 
    VALUES (@ok_time) 
    当@sort=1时,@ok_time=1900-01-06, 
    当@sort=2时,@ok_time=null, 
      

  7.   

    声明全局变量 @@pact_time DateTime 
    set @ok_time=@pact_time
      

  8.   

    楼主@ok_time 是DateTime,datepart 返回的是int类型
    dateadd 返回是datetime,datepart =》dateadd