欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

sql server 回来两个时间的小时部分之差

更新时间: 2014-01-05 02:18:07 责任编辑: Author_N1

 

SQL Server 返回两个时间的小时部分之差
 
  create function gethours(@stime datetime,@etime datetime)
  returns int
  as
  begin
  declare @hstime nvarchar(30)
  declare @hetime nvarchar(30)
  select @hstime=Ltrim(datepart(hh,@stime))
  select @hetime=Ltrim(datepart(hh,@etime))
  if @hstime<8 and @hetime<17 and @hetime>8
  return @hetime-8
  else if @hstime<8 and @hetime>17
  return 8
  else if @hstime<8 and @hetime<8
  return 0
  else if @hstime>17 and @hetime>17
  return 0
  else if @hstime>17 and @hetime<17 and @hetime>8
   return @hetime-8
  else if @hstime>17 and @hetime<8
  return 0
 else 
 return @hetime-@hstime
  end

提示信息:
消息 455,级别 16,状态 2,过程 gethours,第 22 行
The last statement included within a function must be a return statement.
不知道怎么解决啊
--参考方法--
如果你是由什么特殊的需求,我把你的函数改了一下,应该不会报错了:

 create function gethours(@stime datetime,@etime datetime)
  returns int
  as
  
begin
  
  declare @hstime nvarchar(30)
  declare @hetime nvarchar(30)
  declare @result int
  
  select @hstime=Ltrim(datepart(hh,@stime))
  select @hetime=Ltrim(datepart(hh,@etime))
  
  if @hstime<8 and @hetime<17 and @hetime>8
  set @result=@hetime-8
  
  else if @hstime<8 and @hetime>17
  set @result=8
  
  else if @hstime<8 and @hetime<8
  set @result=0
  
  else if @hstime>17 and @hetime>17
  set @result=0
  
  else if @hstime>17 and @hetime<17 and @hetime>8
  set @result=@hetime-8
   
  else if @hstime>17 and @hetime<8
  set @result=0
  
 else 
    set @result=(cast(@hetime as int)- cast(@hstime as int))


return @result

end
go
 
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:18:07
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/8229/
本文WWW.DOC100.NET DOC100.NET版权所有。