• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    工作日計算問題思路和實現

    來源:懂視網 責編:小采 時間:2020-11-09 14:39:12
    文檔

    工作日計算問題思路和實現

    工作日計算問題思路和實現:項目中目前已有一周表存儲了一年中所有的假日,給定查詢起始日期和結束日期,推導出查詢時間段內工作日是多少。為了簡化這個問題,需要下面幾個假設。 1. 不考慮周六周日,將其視作普通工作日 2. 假日沒有交疊情況,不會出現10月1日到7日是國慶節,其中又有
    推薦度:
    導讀工作日計算問題思路和實現:項目中目前已有一周表存儲了一年中所有的假日,給定查詢起始日期和結束日期,推導出查詢時間段內工作日是多少。為了簡化這個問題,需要下面幾個假設。 1. 不考慮周六周日,將其視作普通工作日 2. 假日沒有交疊情況,不會出現10月1日到7日是國慶節,其中又有

    項目中目前已有一周表存儲了一年中所有的假日,給定查詢起始日期和結束日期,推導出查詢時間段內工作日是多少。為了簡化這個問題,需要下面幾個假設。 1. 不考慮周六周日,將其視作普通工作日 2. 假日沒有交疊情況,不會出現10月1日到7日是國慶節,其中又有

    項目中目前已有一周表存儲了一年中所有的假日,給定查詢起始日期和結束日期,推導出查詢時間段內工作日是多少。為了簡化這個問題,需要下面幾個假設。

    1. 不考慮周六周日,將其視作普通工作日

    2. 假日沒有交疊情況,不會出現10月1日到7日是國慶節,其中又有一個其它的節日

    給出假日表的設計,某個假日都有起始時間和結束時間,這里只取月日,這樣就能表示每一年的假日。

    CREATE TABLE [dbo].[holiday](
    	[begin_time] [varchar](50) NULL,
    	[end_time] [varchar](50) NULL
    ) ON [PRIMARY]
    
    GO
    插入測試數據,例如插入國慶節的假日

    \

    給定查詢時間段為從2014-09-30至2014-10-08,這期間的工作日

    declare @query_begin datetime --查詢起始時間
    declare @query_end datetime --查詢結束時間
    declare @year1 int 
    declare @year2 int
    declare @yeartemp int
    declare @total_holidays int
    set @query_begin = '2014-09-01'
    set @query_end = '2015-01-31'
    set @year1 = YEAR(@query_begin)
    set @year2 = YEAR(@query_end)
    
    --存儲所有的含有年月日的假期
    IF object_id('tempdb..#temp') is not null
     BEGIN
     drop table #temp
     END
     CREATE table #temp
     (
     begin_time date, 
     end_time date, 
     )
    
    insert into #temp
    select convert(varchar(4),@year1)+'-'+begin_time, convert(varchar(4),@year1)+'-'+end_time 
    from holiday
    
    --這里主要考慮查詢時間段跨年的情況
    set @yeartemp=@year1+1
    while @yeartemp<=@year2
    begin
     insert into #temp
     select convert(varchar(4),@yeartemp)+'-'+begin_time, convert(varchar(4),@yeartemp)+'-'+end_time 
     from holiday
     set @yeartemp=@yeartemp+1
    end
    
    --去掉和查詢時間段沒有一點交集的假日段
    delete from #temp
    where end_time<@query_begin or begin_time>@query_end
    
    select @total_holidays= SUM(DATEDIFF(dd,begin_time,end_time)+1)
    from
    (
     select case when begin_time<@query_begin then @query_begin else begin_time end as begin_time,
     case when end_time>@query_end then @query_end else end_time end as end_time from #temp
    ) t 
    
    select DATEDIFF(DD,@query_begin,@query_end)+1-@total_holidays
    
    drop table #temp
    執行該腳本就可以得到結果是2,符合預期。下面給出一些特殊測試用例,驗證腳本是否能正確計算工作日。

    1. 查詢時間為2014-10-05至2014-10-08

    結果:1

    2. 查詢時間為2014-09-30至2014-10-07

    結果:1

    3. 增加一條假日,例如是教師節,查詢時間段為2014-09-01至2014-10-08

    結果:30

    4. 在增加一條假日記錄,元旦,查詢時間段為2014-09-01至2015-01-31

    現在holiday表的記錄為:

    \

    如果手動去算就是:30+31+30+31+31-7-1-1=144

    實際結果:144

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    工作日計算問題思路和實現

    工作日計算問題思路和實現:項目中目前已有一周表存儲了一年中所有的假日,給定查詢起始日期和結束日期,推導出查詢時間段內工作日是多少。為了簡化這個問題,需要下面幾個假設。 1. 不考慮周六周日,將其視作普通工作日 2. 假日沒有交疊情況,不會出現10月1日到7日是國慶節,其中又有
    推薦度:
    標簽: 實現 計算 目前
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 久久夜色精品国产www| 精品亚洲国产成AV人片传媒| 日韩精品无码久久一区二区三| 国产综合色在线精品| 午夜成人精品福利网站在线观看 | 国产久热精品无码激情| 无夜精品久久久久久| 精品一区二区无码AV| 亚洲精品高清国产一久久| 国产亚洲精品自在久久| 亚洲AV无码成人网站久久精品大| 久久精品无码av| 国产69精品久久久久99| 久久99国产精品一区二区| 91麻豆精品国产自产在线观看亚洲| 中文字幕无码精品亚洲资源网久久| 精品亚洲欧美无人区乱码| 国产成人精品曰本亚洲79ren | 911亚洲精品不卡| 老司机91精品网站在线观看| 国产短视频精品一区二区三区| 精品国产VA久久久久久久冰| 精品无人区一区二区三区| 久久精品一本到99热免费| 久久亚洲精品无码AV红樱桃| 久久久精品人妻一区二区三区蜜桃| 欧美亚洲色综久久精品国产| 无码囯产精品一区二区免费 | 亚洲av午夜精品一区二区三区 | 九九久久精品无码专区| 国产精品狼人久久久久影院 | 精品人妻无码专区中文字幕| 国产精品夜色视频一级区 | 亚洲国产精品无码专区影院| 亚洲精品高清无码视频| 无码精品人妻一区二区三区漫画 | 亚洲精品你懂的| 欧美精品在线一区| 91久久精品电影| 国产精品成人99久久久久| 精品国产成人国产在线观看|