如何从以YYYYMM格式存储在表中的两个日期中获得月差



我的表有一个列date_period,它以YYYYMM格式存储日期。我想编写一个查询,如果直到当月没有条目,则date_period列中以 YYYYMM 格式插入日期。

例如:日期期间的条目截止到 2015 年 10 月,因此它将包含值 201510。现在,如果数据不存在,我想检查并插入到当前月份的数据。因此,条目现在将201511、201512 201601

我怎样才能做到这一点?

试试这样,愿对你有所帮助

DECLARE @v DATE= getdate()
declare @Currentdate varchar(10)
set  @Currentdate=CONVERT(VARCHAR(10), @v, 112)
/*@Currentdate string is in format '20160129'*/
IF NOT EXISTS(select * from Table1 where  date_period=LEFT(@Currentdate,6))
begin
 insert into Table1(date_period)values(LEFT(@Currentdate,6))
end

试试这个

我认为这将是您问题的完整解决方案

declare @monthcount int
DECLARE @v DATE= getdate()
declare @lastsavedMonth varchar(20)= (select MAX(date_period) from Table1)
declare @Lastsaveddate varchar(20)= @lastsavedMonth+''+RIGHT(CONVERT(VARCHAR, 100 + DATEPART(d,@v)), 2)
set @monthcount=datediff(month,@Lastsaveddate,CONVERT(VARCHAR(10), @v, 112))
while @monthcount>=0
        begin
                declare @dateofsavingmonth varchar(20)
                if(@monthcount=0)
                    begin
                    set @dateofsavingmonth=CONVERT(VARCHAR(10),@v,112)
                    end
                else
                   begin
                     set @dateofsavingmonth=CONVERT(VARCHAR(10), dateadd(month,-@monthcount,@v),112)
                   end
                    IF NOT EXISTS(select * from Table1 where  date_period=LEFT(@dateofsavingmonth,6))
                    begin
                     insert into Table1(date_period)values(LEFT(@dateofsavingmonth,6))
                    end
                set @monthcount =@monthcount-1
        end

最新更新