日期:2014-05-18  浏览次数:20516 次

求高手指点:根据begin_date,end_date,type_no获取执行时间
求一存储过程:根据begin_date,end_date,type_no获取执行时间execute_date

说明:type_no有3类:01代表每天,02代表每周,03代表每月

根据begin_date,end_date,type_no,求得执行日期execute_date


举例:
数据库表中的一条记录如下
begin_date:2012-02-05
end_date:2012-02-08
type_no:01
execute_date:null

根据当前系统日期判断,第一次执行的日期为2012-02-06,第二次执行的日期为2012-02-07,第三次执行的日期为2012-02-08

求高手指点

------解决方案--------------------
把每个type_no的情况都说下呗,然后写下对应的execute_date结果。
------解决方案--------------------
你想要的结果是什么样子的表。写个样子啊。还是你想做什么事?
------解决方案--------------------
探讨
“每周”的意思是:每个礼拜的星期一执行
对于开始日期是2012-02-06,那么下一个周一就是“2012-02-13”

“每月”的意思是:每个月的1号执行
对于开始日期是2012-02-06,那么下一个1号就是“2012-03-01”

------解决方案--------------------
SQL code


--得出下一天的日期
select getdate()+1

得出下一个工作日的日期
create function GetNextWorkDay ( @date datetime )
returns datetime
as 
    begin
        set @date = @date + 1
        while ( datepart(weekday, ( @date + @@datefirst - 1 )) > 5 ) 
            begin
                set @date = @date + 1
            end
        return @date
    end
    
--得到下一个工作日
select dbo.GetNextWorkDay('2012-02-10')
/*
2012-02-13 00:00:00.000
*/