读书人

?给定开始、结束两个日期参数怎么得

发布时间: 2012-12-14 10:33:08 作者: rapoo

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

开始日期: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……



高人

读书人网 >SQL Server

热点推荐