请问报表中显示一个时间段内容的所有日期SQL怎么写

时间:2022-03-12 06:48:30
小弟在做一个报表,格式如下:
时间段:2009-10-01 至 2009-10-15

报表内容:
日期          处理数量
2009-10-01      10
2009-10-02      15
2009-10-03      0
2009-10-04      3


2009-10-15      20

目前碰到一个问题就是如果2009-10-03号刚好数据没有,这一天数据就不会显示。在ORACLE下我会先把所有的时间先拿出来,然后再来给表进行关联,但是SQL SERVER 2005我不知道怎么写?请大侠赐招!!!!

附ORACLE下的做法:
显示一个月的所有天Sql代码
select to_date('200809','yyyymm')+(rownum-1) s_date from dual 
connect by rownum<=last_day(to_date('200809','yyyymm')) - to_date('200809','yyyymm')+1 

结果
2008-09-01
2008-09-02
。。。
2008-09-30

7 个解决方案

#3


引用 1 楼 fredrickhu 的回复:
http://topic.csdn.net/u/20090906/17/a91cd31e-abf7-4190-8486-c5491aa63c71.html?seed=1380177511&r=59598572#r_59598572

恩,自己变通一下

#4


上面的两个帖子讲得很明白了 不写了

#5


SELECT CONVERT(VARCHAR(10),DATEADD(DD,NUMBER,'2009-10-01'),120)AS TIME
 FROM MASTER..SPT_VALUES WHERE TYPE='P' AND DATEADD(DD,NUMBER,'2009-10-01')<='2009-10-15'

TIME       
---------- 
2009-10-01
2009-10-02
2009-10-03
2009-10-04
2009-10-05
2009-10-06
2009-10-07
2009-10-08
2009-10-09
2009-10-10
2009-10-11
2009-10-12
2009-10-13
2009-10-14
2009-10-15

(所影响的行数为 15 行)


再连接连接查询吧,ORCAL的?

#6


isnull(s_date,0)

#7


想不到回复这么快~~谢谢楼上的各位!!!

#1


#2


#3


引用 1 楼 fredrickhu 的回复:
http://topic.csdn.net/u/20090906/17/a91cd31e-abf7-4190-8486-c5491aa63c71.html?seed=1380177511&r=59598572#r_59598572

恩,自己变通一下

#4


上面的两个帖子讲得很明白了 不写了

#5


SELECT CONVERT(VARCHAR(10),DATEADD(DD,NUMBER,'2009-10-01'),120)AS TIME
 FROM MASTER..SPT_VALUES WHERE TYPE='P' AND DATEADD(DD,NUMBER,'2009-10-01')<='2009-10-15'

TIME       
---------- 
2009-10-01
2009-10-02
2009-10-03
2009-10-04
2009-10-05
2009-10-06
2009-10-07
2009-10-08
2009-10-09
2009-10-10
2009-10-11
2009-10-12
2009-10-13
2009-10-14
2009-10-15

(所影响的行数为 15 行)


再连接连接查询吧,ORCAL的?

#6


isnull(s_date,0)

#7


想不到回复这么快~~谢谢楼上的各位!!!