比如 表 A 姓名 月份 额度
张三 1 100000
张三 2 50000
sql 取 张三 1月21到2月10日 的额度。 每天额度当月度额度除以当月天数
1月21日至1月25日的额度
select (select edu as 额度 from A where yue = (select MONTH('2021-01-21'))) /(SELECT TIMESTAMPDIFF(DAY,'2021-01-21','2021-01-25'))
select edu as 额度 from A where yue = (select MONTH('2021-01-21')) 这个计算出这个日期是那个月份的
SELECT TIMESTAMPDIFF(DAY,'2021-01-21','2021-01-25') 计算出两个日期之间相差多少天
1月21到2月10日 的额度。 你可以分别计算出那个日期是那个月份的,然后在计算出每个月份剩余的天数,就和上面是一样的,你自己试试
还有钟可能就是 取张三 1月21日至1月25日的额度
取决于数据库里记录的时间是怎样的。
@subbh nvarchar,--编码
@YD nvarchar ---月度
as
BEGIN
DECLARE @a nvarchar
DECLARE @b decimal
DECLARE @c datetime
select @b=ZP,@c=rq from mdzp where suhhb=@subbh and yd=@YD
declare @cc datetime = CONVERT( datetime, CONVERT( char(8), @c,120) + '1') --@C月第一天
declare @dd datetime = DATEADD( Day, -1, CONVERT( char(8), DATEADD( Month,1,@c),120) + ' 1 ') --@月最后天
declare @ee int = day(dateadd(mm,datediff(mm,0,@c)+1,0)-1) --@C 最后一天日
while (@cc<=@dd)
begin
insert into JKFJZP values (@subbh,@cc,@b/@ee,@b)
select @cc=dateadd(d,1,@cc)
end
END
GO
直接在suhhb 过程里面入值可以, 执行过程带参数,没数据