我的表有一个列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