sql 取值问题sql 取值问题sql 取值问题

比如  表 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日的额度

取决于数据库里记录的时间是怎样的。

  • 如果只精确到月份,那就没办法满足你的查询具体的1月21到2月10号之间额度的需求。
  • 如果数据本身精确到天,可以先查询张三每个月的平均每天额度多少,然后代码自己计算下这个区间内的总额度即可。

@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 过程里面入值可以, 执行过程带参数,没数据