日期:2014-05-17  浏览次数:20508 次

给出一个数,随机到一个月的某些天
比如我是2012年12月的值: 162
我要随机到2012-12-01 至2012-12-30 
但不能包含其中的有些日期比如:2012-12-05、2012-12-14
随机的日期里面值为:8
如果不足把剩余的放在一个单独的单元格
 

最好不要用循环,执行一次就可以了



------解决方案--------------------
写一个函数判断
------解决方案--------------------
DECLARE @Dt VARCHAR(8)
SET @Dt='201212'
;WITH Cte
AS
(
SELECT CAST(@Dt+'01' AS DATEtime) AS dd 
UNION ALL
SELECT dd+1 FROM Cte WHERE dd<DATEADD(mm,1,@Dt+'01')-1
)
SELECT  TOP 8 * FROM Cte AS a
 --WHERE EXISTS(SELECT 1 FROM [排除日期表] WHERE [排除日期]=a.dd) 
 ORDER BY NEWID()

条件里自定义排除日期,随机取8天