我的表格有一个date_period列,以 YYYYMM 格式存储日期。我想编写一个查询,如果在当前月份之前没有条目,则以 YYYYMM 格式在date_period列中插入日期。
例如:日期有进入2015年10月,因此它将包含值 201510 。现在我想检查并插入数据直到当前月份(如果不存在)。因此,参赛作品现在将 201511,201512,201601
我怎样才能做到这一点?
答案 0 :(得分:0)
尝试这种方式,可能会帮助你
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