给出2个日期,有没有办法查出2个日期之间的所有日期?

tjg5202 2009-11-17 04:03:33
例如:2009-9-28 2009-10-5

有什么办法能求出下面的日期
2009-9-28
2009-9-29
2009-9-30
2009-10-1
2009-10-2
2009-10-3
2009-10-4
2009-10-5
...全文
195 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ADVANTECH_CYZ 2009-11-18
  • 打赏
  • 举报
回复
学习学习
--小F-- 2009-11-17
  • 打赏
  • 举报
回复
declare @sql varchar(max),@startdate datetime,@enddate datetime 
set @startdate='2009-09-28'
set @enddate='2009-10-5'
set @sql='select '
select @sql=@sql+','''+convert(varchar(10),dateadd(day,number,@startdate),120)+''''
from master..spt_values where type='P' and number<=datediff(dd,@startdate,@enddate)
select @sql=stuff(@sql,8,1,' ')
exec(@sql)
/*---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
2009-09-28 2009-09-29 2009-09-30 2009-10-01 2009-10-02 2009-10-03 2009-10-04 2009-10-05

(1 行受影响)*/
xman_78tom 2009-11-17
  • 打赏
  • 举报
回复

declare @sql varchar(max)
set @sql='select '
select @sql=@sql+','''+convert(varchar(10),dateadd(day,number,'2009-9-28'),120)+''''
from master..spt_values where type='P' and number<=datediff(d,'2009-9-28','2009-10-5')
select @sql=stuff(@sql,8,1,' ')
--select @sql

exec(@sql)
icelovey 2009-11-17
  • 打赏
  • 举报
回复
学习
tjg5202 2009-11-17
  • 打赏
  • 举报
回复
能否横向排列呢??请教高手们
xman_78tom 2009-11-17
  • 打赏
  • 举报
回复

select dateadd(d,number,'2009-9-28') from master..spt_values
where type='P' and number<=datediff(d,'2009-9-28','2009-10-5')
快乐_石头 2009-11-17
  • 打赏
  • 举报
回复
declare @dtstart datetime,@dtend datetime
select @dtstart='2009-9-28',@dtend='2009-10-5'
;with happy_stone(dtcol)
as
( select @dtstart dtcol
union all
select dateadd(day,1,dtcol) from happy_stone where dateadd(day,1,dtcol)<=@dtend
)
select * from happy_stone
/*
dtcol
-----------------------
2009-09-28 00:00:00.000
2009-09-29 00:00:00.000
2009-09-30 00:00:00.000
2009-10-01 00:00:00.000
2009-10-02 00:00:00.000
2009-10-03 00:00:00.000
2009-10-04 00:00:00.000
2009-10-05 00:00:00.000

(8 個資料列受到影響)


*/
黄_瓜 2009-11-17
  • 打赏
  • 举报
回复
declare @startdate datetime,@enddate datetime
set @startdate='2009-09-28'
set @enddate='2009-10-5'

select convert(varchar(10),dateadd(day,number,@startdate),120)
from
master..spt_values
where
datediff(day,dateadd(day,number,@startdate), @enddate)>=0
and number>=0
and type='p'
/*----------
2009-09-28
2009-09-29
2009-09-30
2009-10-01
2009-10-02
2009-10-03
2009-10-04
2009-10-05

(8 行受影响)

*/
tjg5202 2009-11-17
  • 打赏
  • 举报
回复
额。。好快
--小F-- 2009-11-17
  • 打赏
  • 举报
回复
declare @startdate datetime,@enddate datetime
set @startdate='2009-09-28'
set @enddate='2009-10-5'

select convert(varchar(10),dateadd(day,number,@startdate),120)
from
master..spt_values
where
datediff(day,dateadd(day,number,@startdate), @enddate)>=0
and number>=0
and type='p'
/*----------
2009-09-28
2009-09-29
2009-09-30
2009-10-01
2009-10-02
2009-10-03
2009-10-04
2009-10-05

(8 行受影响)

*/
--小F-- 2009-11-17
  • 打赏
  • 举报
回复
declare @startdate datetime,@enddate datetime
set @startdate='2009-09-28'
set @enddate='2009-10-5'

select convert(varchar(10),dateadd(day,number,@startdate),120)
from
master..spt_values
where
datediff(day,dateadd(day,number,@startdate), @enddate)>=0
and number>0
and type='p'
/*----------
2009-09-29
2009-09-30
2009-10-01
2009-10-02
2009-10-03
2009-10-04
2009-10-05

(7 行受影响)
*/
好汉坡 2009-11-17
  • 打赏
  • 举报
回复
--2009-9-28  2009-10-5 

select date=dateadd(day,number,'2009-9-28')
from master..spt_values
where type='p' and number>=0
and dateadd(day,number,'2009-9-28')<='2009-10-5'

date
-----------------------
2009-09-28 00:00:00.000
2009-09-29 00:00:00.000
2009-09-30 00:00:00.000
2009-10-01 00:00:00.000
2009-10-02 00:00:00.000
2009-10-03 00:00:00.000
2009-10-04 00:00:00.000
2009-10-05 00:00:00.000

(8 行受影响)

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧