起始日期:2020-06-30 天數:45 最終日期:2020-08-15 。用陳述句 convert(varchar(10),DATEADD(day,45,'2020-06-30'),120)只能到2020-08-14,這樣不準,求計算方法。
uj5u.com熱心網友回復:
請問什么是"按30天計算"?uj5u.com熱心網友回復:
每個月按30天,12個月就是360天。有31的也是算30天uj5u.com熱心網友回復:
create function dbo.dateadd2(@date date,@add int)
returns date
as
begin
declare @date2 date,@dt int
select @dt=(select count(1)
from master.dbo.spt_values
where type=N'P'
and number<=abs(@add)
and right(convert(varchar,dateadd(dd,number*iif(@add>=0,1,-1),@date),23),2)='31')
select @date2=dateadd(dd,@add+@dt*iif(@add>=0,1,-1),@date)
return @date2
end
select date2=dbo.dateadd2('2020-06-30',45)
/*
date2
----------
2020-08-15
(1 行受影響)
*/
uj5u.com熱心網友回復:
你這個還是會有些問題,比如2020.02.29,加360天,但是2021年沒有2月29的,那還是會和你的要求結果不一樣。
DECLARE @DT DATE
DECLARE @DIFF INT
SET @DT='2020-02-28'
SET @DIFF=10
SELECT DATEADD(DAY,(DAY(@DT)+(@DIFF%30))%30-1,DATEADD(MONTH,(@DIFF/30)+(DAY(@DT)+(@DIFF%30))/30,DATEADD(DAY,-1*DAY(@DT)+1,@DT)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/21062.html
標籤:疑難問題
下一篇:云計算
