当前位置: 代码迷 >> Sql Server >> 时间天数计算,该如何解决
  详细解决方案

时间天数计算,该如何解决

热度:69   发布时间:2016-04-24 09:35:06.0
时间天数计算
date(时间)             pmt(账期)

2014-12-15             月结
2014-12-15            30天
2014-12-15             月结30天


计算方法:

月结:到本月的最后一天结算,2014-12-15,结果就是(2014-12-31)  -  (2014-12-15)=16天
30天:在日期的基础上加30天,2014-12-15,结果就是2015-01-14=30天
月结30天:本月剩下的日期+30天,2014-12-15,结果是16+30=46天

请问如果要选择,到期日分别为3天,7天,15天的记录,这个应该怎么写。
------解决思路----------------------
月结、天数分两个字段。
WITH table1(startdate,monthend,days) AS (
    SELECT '2014-12-15',1,0 UNION ALL --月结
    SELECT '2014-12-15',0,30 UNION ALL --30天
    SELECT '2014-12-15',1,30 UNION ALL --月结30天
    SELECT '2014-12-15',0,3 UNION ALL --3天
    SELECT '2014-12-15',0,7 UNION ALL --5天
    SELECT '2014-12-15',0,15 --15天
)
,t AS (
    SELECT startdate,
           CASE WHEN monthend = 1 THEN
                DateAdd(day,
                        days,
                        DateAdd(month,
                                1,
                                Convert(varchar(7),startdate,120)+'-01'))
           ELSE
                DateAdd(day,days,startdate)
           END expdate
      FROM table1
)
SELECT *,
       DateDiff(day,startdate,expdate) realdays
  FROM t

startdate  expdate       realdays
---------- ---------- -----------
2014-12-15 2015-01-01          17
2014-12-15 2015-01-14          30
2014-12-15 2015-01-31          47
2014-12-15 2014-12-18           3
2014-12-15 2014-12-22           7
2014-12-15 2014-12-30          15
  相关解决方案