標量值函數-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))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章