给一个日期,得出当月所有日期列表

本文介绍如何使用SQL语句生成指定日期范围内的日期序列,并通过不同示例展示了如何精确控制生成的日期格式。

declare @date datetime  
set @date='2009-02-05' 
 
select [day]=convert(varchar,DATEADD(mm,DATEDIFF(mm,0,@date),0)+number,112)  
from master..spt_values  
where type='p' 
  and number< datediff(dd,@date,dateadd(mm,1,@date))  
 
/* 
 day 
20090201 
20090202 
20090203 
20090204 
20090205 
20090206 
20090207 
20090208 
20090209 
20090210 
20090211 
20090212 
20090213 
20090214 
20090215 
20090216 
20090217 
20090218 
20090219 
20090220 
20090221 
20090222 
20090223 
20090224 
20090225 
20090226 
20090227 
20090228 
*/ 
 
DECLARE @d1 DATETIME, @d2 DATETIME     
SELECT @d1 = '2010-01-01', @d2 = '2010-05-31'     
    
SELECT [day] = CONVERT(VARCHAR, DATEADD(dd, number, @d1), 23)   
FROM MASTER..spt_values  
WHERE TYPE = 'p' 
    AND number<= DATEDIFF(dd, @d1, @d2)     
/* 
day 
------------------------------ 
2010-01-01 
2010-01-02 
2010-01-03 
2010-01-04 
2010-01-05 
2010-01-06 
2010-01-07 
2010-01-08 
2010-01-09 
...... 
2010-05-25 
2010-05-26 
2010-05-27 
2010-05-28 
2010-05-29 
2010-05-30 
2010-05-31 
 
(151 行受影响) 
*/ 


本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/htl258/archive/2009/09/06/4525426.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值