标量值函数-1

 刚工作,看师傅写的那sql语句没晕死,两天下来,根据要求,自己也写了一段,自我感觉良好啊!

功能是:返回当前时间的周数 +当前时间所在的星期+当前时间所在节次(如果节次小于10,数字前面加0)

alter function [dbo].[nextlessontime]
(
 @day varchar(200)
)
returns varchar(100)
as
begin
 declare @returnValue varchar(50);
 declare @xqks datetime;
 declare @days int;
 declare @wk int;
 declare @xq int;
 declare @txq int;
 declare @jc int;
 declare @sd datetime;

 set @txq=datepart(weekday,@day)-1;

 set @sd=right(@day,len(@day)-charindex(' ',@day));

 select top(1) @jc=time from timeofteachdate
 where convert(datetime,begintime)<@sd order by id desc;
 
 select @xqks=kxrq from t_jh_setxl where  kxrq<@day and fjrq>@day;--开学日期
 set @xq=datepart(weekday,@xqks)-1;
 
 set @days=datediff(day,@xqks,@day)+convert(int,@xq)-1;--不足第一周天数
 
 select @wk=case @days%7 when '0' then convert(int,@days/7) else convert(int,@days/7)+1 end;--当前周数

 select  @returnValue=case when @jc<10
  then convert(varchar(50),@wk)+convert(varchar(50),@txq)+'0'+convert(varchar(50),@jc)
  else convert(varchar(50),@wk)+convert(varchar(50),@txq)+convert(varchar(50),@jc)  end;
return @returnValue
end

再创建一个视图进行调用,好了

create view mygetNextlesson
as
select distinct *from  lesson where tst >dbo.nextlessontime(convert(varchar(200),getdate(),20))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章