我想知道某人是否在SQL中有一个函数,而不是给定一个初始日期和一周中的某一天(例如星期二),它可以计算自从初始日期起是星期二的下一个日期。
例如:
假设:
@ initialdate = 01-02-2013 - 这一天是星期五
@dayofweek = 3 - 3表示星期三,1表示星期一,7表示星期日
返回:日期= 06-02-2013
也许我还没有解释好.. 我的意思是 一个函数,参数@ dayofweek = 3(星期三),然后我可以给出很多不同的日期:
01-02-2013然后如果@ dayofweek = 3则下一个日期将是06-02-2013
02-02-2013然后如果@ dayofweek = 3则下一个日期将是06-02-2013
03-02-2013然后如果@ dayofweek = 3则下一个日期将是06-02-2013
04-02-2013然后如果@ dayofweek = 3则下一个日期将是06-02-2013
05-02-2013然后如果@ dayofweek = 3那么下一个日期将是06-02-2013
06-02-2013然后如果@ dayofweek = 3则下一个日期将是13-02-2013
07-02-2013然后如果@ dayofweek = 3则下一个日期将是13-02-2013
答案 0 :(得分:0)
这很丑陋,但我尝试制作更优雅的解决方案并没有那么好用。
请注意,这假设DATEPART(dw,@ someVarThatIsSunday)返回1.有关详细信息,请参阅Set DateFirst。
declare @dayofweek int
set @dayofweek = 3
declare @initialDate datetime
set @initialDate = getdate()
declare @increment int
select @increment =
case DATEPART(dw, @initialDate)
when 1 then @dayofweek
when 2 then @dayofweek + 6
when 3 then @dayofweek + 5
when 4 then @dayofweek + 4
when 5 then @dayofweek + 3
when 6 then @dayofweek + 2
when 7 then @dayofweek + 1
end
if @increment > 7
begin
set @increment = @increment - 7
end
select DATEADD(day, @increment, @initialDate)