开始时间 startdate(2015-6-17) 、结束时间 enddate(2016-6-17)
求开始时间到结束时间之间每月3号的日期?
求开始时间到结束时间之间每周二的日期?

解不出来给点思路吧。
------解决思路----------------------
筛选出每月3号
SELECT * FROM TableName WHERE [Date] BETWEEN StartDate AND EndDate AND SUBSTRING(CONVERT(varchar(10), [Date], 120), 9, 2) = '03'
筛选出星期二
SELECT * FROM TableName WHERE [Date] BETWEEN StartDate AND EndDate AND datename(weekday, [Date]) = '星期二'
------解决思路----------------------
DECLARE @StartDate DATETIME ='2015/05/16';
DECLARE @EndDate DATETIME ='2016/05/16';
DECLARE @Diff INT = DATEDIFF(DAY,@StartDate, @EndDate);
SELECT
DATEADD(DAY, SV.NUMBER,@StartDate) AS 'CurrentDate'
,CASE WHEN DATEPART(DAY,DATEADD(DAY, SV.NUMBER,@StartDate) ) =3 THEN DATEADD(DAY, SV.NUMBER,@StartDate) ELSE NULL END AS '3rd of Date'
,CASE WHEN DATENAME(WEEKDAY,DATEADD(DAY, SV.NUMBER,@StartDate) ) ='Tuesday' THEN DATEADD(DAY, SV.NUMBER,@StartDate) ELSE NULL END AS 'Tuesday'
FROM MASTER.dbo.spt_values SV
WHERE TYPE ='P'
AND SV.number <= @Diff
------解决思路----------------------
稍微改下大师的就可以了,如下
SET DATEFIRST 1
DECLARE @StartDate DATETIME
SET @StartDate ='2015/05/16';
DECLARE @EndDate DATETIME
SET @EndDate ='2016/05/16';
DECLARE @Diff INT
SET @Diff = DATEDIFF(DAY,@StartDate, @EndDate);
SELECT
DATEADD(DAY, SV.NUMBER,@StartDate) AS 'CurrentDate'
,CASE WHEN DATEPART(DAY,DATEADD(DAY, SV.NUMBER,@StartDate) ) =3 THEN DATEADD(DAY, SV.NUMBER,@StartDate) ELSE NULL END AS '3rd of Date'
,CASE WHEN DATEPART(WEEKDAY,DATEADD(DAY, SV.NUMBER,@StartDate) ) =2 THEN DATEADD(DAY, SV.NUMBER,@StartDate) ELSE NULL END AS 'Tuesday'
FROM MASTER.dbo.spt_values SV
WHERE TYPE ='P'
AND SV.number <= @Diff