剛工作,看師傅寫的那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 mygetNextlessonas
select distinct *from lesson where tst >dbo.nextlessontime(convert(varchar(200),getdate(),20))