--建立测试环境
Create Table 表(日期 datetime,雨量 varchar(10))
--插入数据
insert into 表
select '1960-1-2','7' union
select '1960-1-5','5' union
select '1960-1-9','12' union
select '1960-1-20','15' union
select '1960-2-1','0.7' union
select '1960-2-5','7'
--测试语句
declare @t table(日期 datetime)
declare @date datetime
set @date='1960-1-1'
while @date<='1960-2-5'
begin
insert into @t select @date
set @date=@date+1
end
select a.日期,isnull(雨量,0)as 雨量 from @t a left join 表 b on a.日期=b.日期
--删除测试环境
Drop Table 表
/*日期 雨量
------------------------------------------------------ ----------
1960-01-01 00:00:00.000 0
1960-01-02 00:00:00.000 7
1960-01-03 00:00:00.000 0
1960-01-04 00:00:00.000 0
1960-01-05 00:00:00.000 5
1960-01-06 00:00:00.000 0
1960-01-07 00:00:00.000 0
1960-01-08 00:00:00.000 0
1960-01-09 00:00:00.000 12
1960-01-10 00:00:00.000 0
1960-01-11 00:00:00.000 0
1960-01-12 00:00:00.000 0
1960-01-13 00:00:00.000 0
1960-01-14 00:00:00.000 0
1960-01-15 00:00:00.000 0
1960-01-16 00:00:00.000 0
1960-01-17 00:00:00.000 0
1960-01-18 00:00:00.000 0
1960-01-19 00:00:00.000 0
1960-01-20 00:00:00.000 15
1960-01-21 00:00:00.000 0
1960-01-22 00:00:00.000 0
1960-01-23 00:00:00.000 0
1960-01-24 00:00:00.000 0
1960-01-25 00:00:00.000 0
1960-01-26 00:00:00.000 0
1960-01-27 00:00:00.000 0
1960-01-28 00:00:00.000 0
1960-01-29 00:00:00.000 0
1960-01-30 00:00:00.000 0
1960-01-31 00:00:00.000 0
1960-02-01 00:00:00.000 0.7
1960-02-02 00:00:00.000 0
1960-02-03 00:00:00.000 0
1960-02-04 00:00:00.000 0
1960-02-05 00:00:00.000 7
*/
Create Table 表(日期 datetime,雨量 varchar(10))
--插入数据
insert into 表
select '1960-1-2','7' union
select '1960-1-5','5' union
select '1960-1-9','12' union
select '1960-1-20','15' union
select '1960-2-1','0.7' union
select '1960-2-5','7'
--测试语句
declare @t table(日期 datetime)
declare @date datetime
set @date='1960-1-1'
while @date<='1960-2-5'
begin
insert into @t select @date
set @date=@date+1
end
select a.日期,isnull(雨量,0)as 雨量 from @t a left join 表 b on a.日期=b.日期
--删除测试环境
Drop Table 表
/*日期 雨量
------------------------------------------------------ ----------
1960-01-01 00:00:00.000 0
1960-01-02 00:00:00.000 7
1960-01-03 00:00:00.000 0
1960-01-04 00:00:00.000 0
1960-01-05 00:00:00.000 5
1960-01-06 00:00:00.000 0
1960-01-07 00:00:00.000 0
1960-01-08 00:00:00.000 0
1960-01-09 00:00:00.000 12
1960-01-10 00:00:00.000 0
1960-01-11 00:00:00.000 0
1960-01-12 00:00:00.000 0
1960-01-13 00:00:00.000 0
1960-01-14 00:00:00.000 0
1960-01-15 00:00:00.000 0
1960-01-16 00:00:00.000 0
1960-01-17 00:00:00.000 0
1960-01-18 00:00:00.000 0
1960-01-19 00:00:00.000 0
1960-01-20 00:00:00.000 15
1960-01-21 00:00:00.000 0
1960-01-22 00:00:00.000 0
1960-01-23 00:00:00.000 0
1960-01-24 00:00:00.000 0
1960-01-25 00:00:00.000 0
1960-01-26 00:00:00.000 0
1960-01-27 00:00:00.000 0
1960-01-28 00:00:00.000 0
1960-01-29 00:00:00.000 0
1960-01-30 00:00:00.000 0
1960-01-31 00:00:00.000 0
1960-02-01 00:00:00.000 0.7
1960-02-02 00:00:00.000 0
1960-02-03 00:00:00.000 0
1960-02-04 00:00:00.000 0
1960-02-05 00:00:00.000 7
*/
@begin datetime,@end datetime
)
returns @EveryDay table(NoLostday datetime)
as
begin
declare @TempT table (NoLostday datetime)
declare @tempd datetime
set @tempd=@begin
--insert into @TempT select @tempd
while datediff(d,@tempd,@end)>0
begin
insert into @TempT select @tempd
set @tempd=dateadd(d,1,@tempd)
end
insert into @EveryDay Select * from @TempT
return
end
go
---1960-1-1至1960-2-5select convert(char(10),a.NoLostday,120) as 日期,isnull(b.雨量,0) as 雨量
from dbo.f_getday('1960-1-1','1960-2-5') a
left join 表 b
on a.NoLostday=b.日期drop function f_getday