首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

?给定开始、结束两个日期参数,怎么得到上面的结果?

2012-12-14 
???给定开始、结束两个日期参数,如何得到下面的结果???请问,给定开始、结束两个日期参数,如何得到下面的结果

???给定开始、结束两个日期参数,如何得到下面的结果???
请问,给定开始、结束两个日期参数,如何得到下面的结果集
如:

开始日期:2010-10-05
结束日期:2011-3-20

如何将这两个区间包含的年月插入到指定表T1中,T1表包含nian、yue字段
nian  yue
2010  10
2010  11
2010  12
2011  01
2011  02
2011  03



[最优解释]


create   function   calcmonth(@dt1   datetime,@dt2   datetime) 
returns   @re   table(id   int   identity(1,1),yyyy int,MM int) 
as 
begin 
declare   @month1   int
declare   @year1int
declare   @month2   int
declare   @year2int
declare   @countint
select   @month1=MONTH(@dt1)
select @year1=YEAR(@dt1)
select   @count=datediff(month,@dt1,@dt2)

while@count>=0
begin 
insert   into   @re(yyyy,MM) values(@year1,@month1)
set@count=@count-1
set@month1=@month1+1
if @month1>12
begin
set@month1=1
set@year1=@year1+1
end
end
return 
end 
GO
--调用方法
Select * from dbo.calcmonth('2010-5-1','2011-3-20')

[其他解释]
create table #T1(nian char(4),yue char(2))
declare @begindate Date='2010-10-5'
declare @enddate date='2011-3-20'
declare @i int=0,@count int=DATEDIFF(month,@begindate,@enddate)

while  @i<=@count
begin
insert into #T1
select ltrim(YEAR(@begindate)),right('00'+cast(MONTH(@begindate) as varchar(2)),2)
set @begindate=DATEADD(month,1,@begindate)
set @i=@i+1
end
select * from #T1
[其他解释]
顶- -
CREATE table #T1 (nian char(4),yue char(2))
declare @begindate Datetime
SET @begindate='2010-10-5'
declare @enddate datetime
SET @enddate='2011-3-20'
declare @i int,@count int
SET @i=0
SET @count=DATEDIFF(month,@begindate,@enddate)

while  @i<=@count
begin
insert INTO #T1
select ltrim(YEAR(@begindate)),right('00'+cast(MONTH(@begindate) as varchar(2)),2)
set @begindate=DATEADD(month,1,@begindate)
set @i=@i+1
end
select * from #T1 



[其他解释]

DECLARE @start DATETIME='2010-10-05',
@end DATETIME='2011-3-20'
SELECTYEAR(DATEADD(MONTH,number,@start)) AS [nian],
CASE LEN(MONTH(DATEADD(MONTH,number,@start))) WHEN 1 
THEN LTRIM(0)+LTRIM(MONTH(DATEADD(MONTH,number,@start))) 
ELSE LTRIM(MONTH(DATEADD(MONTH,number,@start))) 
ENDAS [yue]
FROMmaster..spt_values
WHERE[type]='P'
ANDDATEADD(MONTH,number,@start)<=@end

--------------------
nianyue
201010
201011
201012
201101
201102
201103

[其他解释]
引用:

SQL code?1234567891011121314151617181920DECLARE @start DATETIME='2010-10-05',        @end DATETIME='2011-3-20'SELECT  YEAR(DATEADD(MONTH,number,@start)) AS [nian],        CASE LEN(MONTH(D……



高人

热点排行