帮忙看是为什么?
create table a(kaiyongshijian datetime , shedingshijian int ,ID int , beizhu varchar(100))
insert into a
select '2007-4-3 12:00:00 ',12,1, ' ' union all
select '2007-4-3 12:00:00 ',15,5, ' ' union all
select '2007-4-3 12:00:00 ',20,9, ' ' union all
select '2007-5-3 12:00:00 ',10,2, ' ' union all
select '2007-5-3 12:00:00 ',7,3, ' ' union all
select '2007-5-3 12:00:00 ',5,6, ' '
declare @n int, @year int
set @year =2008 --設置年份
set @n=0
while @@rowcount> 0
begin
set @n=@n+1
insert into b
select dateadd(month,shedingshijian*@n, kaiyongshijian ),ID,beizhu
from a
where year(dateadd(month,shedingshijian*@n, kaiyongshijian) )=@year
end
为什么只能算出来2008年的?别的年份都算不出
[解决办法]
這麼用倒是可以
create table a(kaiyongshijian datetime , shedingshijian int ,ID int , beizhu varchar(100))
insert into a
select '2007-4-3 12:00:00 ',12,1, ' ' union all
select '2007-4-3 12:00:00 ',15,5, ' ' union all
select '2007-4-3 12:00:00 ',20,9, ' ' union all
select '2007-5-3 12:00:00 ',10,2, ' ' union all
select '2007-5-3 12:00:00 ',7,3, ' ' union all
select '2007-5-3 12:00:00 ',5,6, ' '
create table b(kaiyongshijian datetime , ID int , beizhu varchar(100))
declare @n int, @year int
set @year =2009 --設置年份
set @n=0
--while @@rowcount> 0
while @n <= 100
begin
set @n=@n+1
insert into b
select dateadd(month,shedingshijian*@n, kaiyongshijian ),ID,beizhu
from a
where year(dateadd(month,shedingshijian*@n, kaiyongshijian) )=@year
end
Select * From b
Drop Table a,b