获取范围之间的日期 [英] Get Between dates with in the range

查看:66
本文介绍了获取范围之间的日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Name	        EnterDate	   todate
Shireeshab	12/15/2011	12/16/2011
anila	       12/16/2011	12/16/2011
ravichand	12/12/2011	12/13/2011
manoj	       1/4/2013	        3/4/2013
raju	      12/15/2011	12/16/2011
Srinivas       1/6/2012	        1/6/2012



我有这样的数据。现在我想从enterdate和todate获取日期

例如



for manoj输入日期2013年1月4日,todate是3 / 4/2013所以我希望在一栏中获得1/4 / 2013,2 / 4 / 2013,3 / 4/2013

就像所有名字一样。



期望的输出是


I have the data like this. now i want to get beetween dates from enterdate and todate
for example

for manoj enter date 1/4/2013 and todate is 3/4/2013 so i want to get 1/4/2013,2/4/2013,3/4/2013 in one column
like that all the names.

Desired output is

12/15/2011
12/16/2011
 12/16/2011
12/12/2011
12/13/2011
1/4/2013
2/4/2013
3/4/2013

推荐答案

试试这个:

Try this:
create procedure EnumerateDates 
@fromdate datetime, 
@todate datetime
as
begin
with mycte as
(
	select @fromdate DateValue
    union all
    select DateValue + 1
    from    mycte   
    where   DateValue + 1 <= @todate
)
select DateValue
from    mycte
OPTION (MAXRECURSION 0)
end





用法:



Usage:

exec EnumerateDates '2013.01.01','2013.01.10'


您好prakash.chakrala,



你可以试试这个,





Hi prakash.chakrala,

you can try this,


create FUNCTION Dates(@fromdate datetime,@todate datetime)
returns varchar(1000) 
as
begin

	DECLARE @Count INT
	DECLARE @Len INT
	Declare @dates varchar(max)

	set @count=1;
	set @Len= DATEDIFF(Day,@fromdate,@todate)
	set @dates=CONVERT(Varchar,@fromdate,105)

	  while @Count<=@Len
	  begin
			set @fromdate=@fromdate+1;
			set @dates=@dates+'''''',''+CONVERT(varchar,@fromdate,105);
			set @Count=@Count+1;
	 end
	 return @dates
end







select Name,Dates(EnterDate,ToDate)
from table1 (nolock)
where name='manoj'







希望它会帮助你... < br $>


Happy Coding




Hope it will help you...

Happy Coding


这篇关于获取范围之间的日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆