按一年360天计算如何取两个日期之间的活期存款天数

时间:2021-07-08 01:25:48
比如用datediff(day,'2016-08-15','2016-11-18')取到的天数是95天,按360天计算的话应该是93天。请教如何改?

10 个解决方案

#1


你的360天 是怎么定义的呢。

#2


用datediff是按365天算。现在我就是不懂怎么按360天来算

#3


datediff--按日期真实天数计算,而不是你自定义的 1年=360天?

#4


引用 3 楼 roy_88 的回复:
datediff--按日期真实天数计算,而不是你自定义的 1年=360天?


我知道。现在就想取两个日期之间的天数,按每月30天来计算。

#5


引用 4 楼 gxabc001 的回复:
Quote: 引用 3 楼 roy_88 的回复:

datediff--按日期真实天数计算,而不是你自定义的 1年=360天?


我知道。现在就想取两个日期之间的天数,按每月30天来计算。


那有些特例要怎么计算?如2月28日,或是10月31日。

#6



-- 这个意思 ?
select 95 * 360 / 365  c1, 95.0 * 360 / 365 c2


c1          c2
----------- ---------------------------------------
93          93.698630

(1 行受影响)


#7


引用 6 楼 卖水果的net的回复:

-- 这个意思 ?
select 95 * 360 / 365  c1, 95.0 * 360 / 365 c2


c1          c2
----------- ---------------------------------------
93          93.698630

(1 行受影响)



不是,我是要两个日期之间的天数,每月按30天计算。

#8


我自已解决了,写了个日期函数,碰到有31天的减1,28天的加2,这样就保证是按一年360天计算了。结贴

#9


你是说每个月按照固定30天算吧?
可以先算出两个日期间隔的整数月,乘以30,然后加加上剩余天数。


DECLARE @StartDate DATETIME='2016-08-15',@EndDate DATETIME='2016-11-18'
SELECT datediff(m,@StartDate,@EndDate)*30+ datediff(d,DATEADD(m,datediff(m,@StartDate,@EndDate),@StartDate),@EndDate)
--93

#10


引用 9 楼 ch21st 的回复:
你是说每个月按照固定30天算吧?
可以先算出两个日期间隔的整数月,乘以30,然后加加上剩余天数。


DECLARE @StartDate DATETIME='2016-08-15',@EndDate DATETIME='2016-11-18'
SELECT datediff(m,@StartDate,@EndDate)*30+ datediff(d,DATEADD(m,datediff(m,@StartDate,@EndDate),@StartDate),@EndDate)
--93


历害了。就是这样,我是自己用了个笨办法。非常感谢!

#1


你的360天 是怎么定义的呢。

#2


用datediff是按365天算。现在我就是不懂怎么按360天来算

#3


datediff--按日期真实天数计算,而不是你自定义的 1年=360天?

#4


引用 3 楼 roy_88 的回复:
datediff--按日期真实天数计算,而不是你自定义的 1年=360天?


我知道。现在就想取两个日期之间的天数,按每月30天来计算。

#5


引用 4 楼 gxabc001 的回复:
Quote: 引用 3 楼 roy_88 的回复:

datediff--按日期真实天数计算,而不是你自定义的 1年=360天?


我知道。现在就想取两个日期之间的天数,按每月30天来计算。


那有些特例要怎么计算?如2月28日,或是10月31日。

#6



-- 这个意思 ?
select 95 * 360 / 365  c1, 95.0 * 360 / 365 c2


c1          c2
----------- ---------------------------------------
93          93.698630

(1 行受影响)


#7


引用 6 楼 卖水果的net的回复:

-- 这个意思 ?
select 95 * 360 / 365  c1, 95.0 * 360 / 365 c2


c1          c2
----------- ---------------------------------------
93          93.698630

(1 行受影响)



不是,我是要两个日期之间的天数,每月按30天计算。

#8


我自已解决了,写了个日期函数,碰到有31天的减1,28天的加2,这样就保证是按一年360天计算了。结贴

#9


你是说每个月按照固定30天算吧?
可以先算出两个日期间隔的整数月,乘以30,然后加加上剩余天数。


DECLARE @StartDate DATETIME='2016-08-15',@EndDate DATETIME='2016-11-18'
SELECT datediff(m,@StartDate,@EndDate)*30+ datediff(d,DATEADD(m,datediff(m,@StartDate,@EndDate),@StartDate),@EndDate)
--93

#10


引用 9 楼 ch21st 的回复:
你是说每个月按照固定30天算吧?
可以先算出两个日期间隔的整数月,乘以30,然后加加上剩余天数。


DECLARE @StartDate DATETIME='2016-08-15',@EndDate DATETIME='2016-11-18'
SELECT datediff(m,@StartDate,@EndDate)*30+ datediff(d,DATEADD(m,datediff(m,@StartDate,@EndDate),@StartDate),@EndDate)
--93


历害了。就是这样,我是自己用了个笨办法。非常感谢!