当前位置: 代码迷 >> Sql Server >> 关于datetime类型作output参数时会加上程序执行时间的有关问题
  详细解决方案

关于datetime类型作output参数时会加上程序执行时间的有关问题

热度:36   发布时间:2016-04-27 13:28:13.0
关于datetime类型作output参数时会加上程序执行时间的问题
SQL code
use tempdbgocreate proc p_test@id datetime outputas    set @id = (select dateadd(day,2,getdate()))godeclare @id datetimeset @id = (select getdate())select @idWAITFOR DELAY '00:00:05'exec p_test @id outputselect @idgodrop proc p_testgo


上面的程序中,我想通过存储过程得到原有时间的两天后的时间,精确到毫秒,但是因为程序执行需要时间,比如说我在里面执行了一个WAITFOR DELAY '00:00:05' 结果得到的时间比原来的时间多少两天 再加上5秒  
因为这个程序简单毫秒级不会变 但是我的实际程序运行需要几个毫秒,就像5秒延时一样  

我想问的是怎么才能忽略这个因为程序运行所加的时间,就是以上程序得到的结果只再两天时间,不会加上延时的那5秒

这个只有datetime类型有这个问题 其他的类型不会有这个问题


------解决方案--------------------
SQL code
use tempdbgocreate proc p_test@id datetime outputas    set @id = dateadd(day, 2, isnull(@id,getdate())) -- @id传入时间,NULL取getdate()godeclare @id datetimeset @id = (select getdate())select @idWAITFOR DELAY '00:00:05'exec p_test @id outputselect @idgodrop proc p_test
------解决方案--------------------
getdate() 是不确定函数。两次执行值是不一样的,所以delay 的5秒在俩面有体现。

getdate()后一般直接存储到变量里面使用。LZ这个
WAITFOR DELAY '00:00:05'
exec p_test @id output

等待5秒后,再次的getdate()肯定是跟前面的不一样了。 
  相关解决方案