获取一段时间内所有日期

SELECT 
DATEADD(dd,ROW_NUMBER() OVER(ORDER BY a.number ASC),'2011.01.01')
FROM 
MASTER.dbo.spt_values a 
CROSS JOIN MASTER.dbo.spt_values b 
WHERE 
a.TYPE = 'P' AND 
b.TYPE = 'P' AND 
a.number < 50 AND 
b.number < 50

  获取一段时间内所有月份

SELECT * FROM (
SELECT 
	DISTINCT
	convert(varchar(7),
	cast(
		ltrim( year(DATEADD(dd,ROW_NUMBER() OVER(ORDER BY a.number ASC),'2015.01.01'))) 
		+'-'+
		ltrim( month(DATEADD(dd,ROW_NUMBER() OVER(ORDER BY a.number ASC),'2015.01.01')))
		+'-01' as datetime)
		,120) 财务月
FROM 
MASTER.dbo.spt_values a 
CROSS JOIN MASTER.dbo.spt_values b 
WHERE 
a.TYPE = 'P' AND 
b.TYPE = 'P' AND 
a.number < 80 AND 
b.number < 80
) a
WHERE CAST(a.财务月+'-01' AS DATETIME) < SYSDATETIME()
ORDER BY a.财务月

  

posted @ 2016-08-08 14:06  修炼者  阅读(564)  评论(0)    收藏  举报