标量值函数-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))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值