当前位置: 代码迷 >> Sybase >> 怎么得到这种表
  详细解决方案

怎么得到这种表

热度:8370   发布时间:2013-02-26 00:00:00.0
如何得到这种表?
在存储过程里面 有两个参数 一个开始日期,一个截至日期 
我想得到一个表,这个表只有两列 一列自增,一列就是日期

比如 

开始日期为2009-08-01 截至日期为2009-08-05 那么记录就为
id 日期 
1 2009-08-01
2 2009-08-02
3 2009-08-03
4 2009-08-04
5 2009-08-05

越简单越好 谢谢先!

------解决方案--------------------------------------------------------
http://topic.csdn.net/u/20090906/17/a91cd31e-abf7-4190-8486-c5491aa63c71?seed=1380177511&r=59598572#r_59598572
------解决方案--------------------------------------------------------
==
------解决方案--------------------------------------------------------
可以参考一楼的。
------解决方案--------------------------------------------------------
探讨
http://topic.csdn.net/u/20090906/17/a91cd31e-abf7-4190-8486-c5491aa63c71?seed=1380177511&r=59598572#r_59598572

------解决方案--------------------------------------------------------
SQL code
if(object_id('p_test')>0)drop proc p_testgocreate proc p_test  (@date1 datetime,@date2 datetime)asbegin        select number=number+1,convert(varchar(10),@date1+number,120)         from master..spt_values where type='p' and @date1+number<=@date2end goexec p_test '2009-01-01','2009-01-10'/*1    2009-01-012    2009-01-023    2009-01-034    2009-01-045    2009-01-056    2009-01-067    2009-01-078    2009-01-089    2009-01-0910    2009-01-10*/
------解决方案--------------------------------------------------------
SQL code
declare @date datetimeset @date='2009-02-05'select [day]=convert(varchar(6),@date,112)++right('0'+ltrim(number),2)from master..spt_valueswhere type='p'  and number >=1   and number <= datediff(dd,@date,dateadd(month,1,@date))
------解决方案--------------------------------------------------------
探讨
SQL codeif(object_id('p_test')>0)dropproc p_testgocreateproc p_test (@date1datetime,@date2datetime)asbeginselectnumber=number+1,convert(varchar(10),@date1+number,120)from master..spt_valueswhere type='p'and@date1+number<=@date2endgoexec p_test'2009-01-01','2009-01-10'/*
1 2009-01-01
2 2009-01-02
3 2009-01-03
4 2009-01-04
5 2009-01-05
6 2009-01-06
7 2009-01-07
8 2009-01-08
9 2009-01-09
10 2009-01-10*/

------解决方案--------------------------------------------------------
SQL code
declare @begin datetime,@end datetimeselect @begin='2009-08-01',@end='2009-08-05' select id=number+1,日期=dateadd(dd,number,@begin) from master..spt_valueswhere type='p' and number between 0 and datediff(dd,@begin,@end)/*id          日期                                                     ----------- ------------------------------------------------------ 1           2009-08-01 00:00:00.0002           2009-08-02 00:00:00.0003           2009-08-03 00:00:00.0004           2009-08-04 00:00:00.0005           2009-08-05 00:00:00.000(所影响的行数为 5 行)*/
------解决方案--------------------------------------------------------
SQL code
declare @begin datetime,@end datetimeselect @begin='2009-08-01',@end='2009-08-05' select id=number+1,日期=convert(varchar(10),dateadd(dd,number,@begin),120) from master..spt_valueswhere type='p' and number between 0 and datediff(dd,@begin,@end)/*id          日期         ----------- ---------- 1           2009-08-012           2009-08-023           2009-08-034           2009-08-045           2009-08-05(所影响的行数为 5 行)*/
------解决方案--------------------------------------------------------
这个例子很多,我蹭分了
------解决方案--------------------------------------------------------
  相关解决方案