刚工作,看师傅写的那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))