- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
巧用master..spt_values表输出数字或者时间常量表
巧用master..spt_values表输出数字或者时间常量表/GRANDTREE/archive/2009/06/16/4273129.aspx?sql开发中经常需要使用数字或者时间的常量表。比如,输出一年的月份表,输出1000以内的自然数等等。数量连续且不超过2048。那么使用master..spt_values表就会再也方便不过了。例如输出1000以内的自然数:select number from master..spt_valueswhere type=P and?number between 1 and 1000?dx:原作有误master..spt_values表的type字段值为p的,对应,number字段的值是从1至255,原始值最大255(不知主动加到2000或以上有没有问题)?输出2008年至今以来的月份列表:create table Mon(? ID int identity(1,1),? Mon varchar(6))GODECLARE?? @BeginMonth varchar(6),? @EndMonth varchar(6)SELECT? @BeginMonth=200801,? @EndMonth=200906INSERT Mon(Mon)SELECT? CONVERT(VARCHAR(6),DATEADD(month,number,@BeginMonth+01),112)FROM?? master..spt_values?WHERE?? type=P?and?? DATEADD(month,number,@BeginMonth+01)=@EndMonth+01SELECT * FROM MonDROP TABLE Mon[sql server] 得到连续日期查询/xys_777/archive/2010/06/20/5681208.aspx?得到连续日期需要借助一个有连续序号的表,参考如何得到连续序号?--〉生成连续日期的方法IF OBJECT_ID(tempdb..#t) IS NOT NULL? DROP TABLE #tGOcreate table #t(id int identity,Dt varchar(10))godeclare? @starttime datetime,@endtime datetimeset @starttime = 2010-5-01set @endtime =2010-5-31insert #tselect convert(varchar(10),dateadd(day,number,@starttime),120) dtfrom master..spt_valueswhere type=P and number between 0 and datediff(day,@starttime,@endtime)--结果select * from #t/*id????????? Dt----------- ----------1?????????? 2010-05-012?????????? 2010-05-023?????????? 2010-05-034?????????? 2010-05-045?????????? 2010-05-056?????????? 2010-05-067?????????? 2010-05-078?????????? 2010-05-089?????????? 2010-05-0910????????? 2010-05-1011????????? 2010-05-1112????????? 2010-05-1213????????? 2010-05-1314????????? 2010-05-1415????????? 2010-05-1516????????? 2010-05-1617????????? 2010-05-1718????????? 2010-05-1819????????? 2010-05-1920????????? 2010-05-2021????????? 2010-05-2122????????? 2010-05-2223????????? 2010-05-2324????????? 2010-05-2425????????? 2010-05-2526????????? 2010-05-2627????????? 2010-05-2728????????? 2010-05-2829????????? 2010-05-2930????????? 2010-05-3031????????? 2010-05-31(31 行受影响)*/实际例子:原帖:/u18/3b4d60f2-b477-41
文档评论(0)