在mssql中,有些商品会伪造一些评价,但是评价信息可能会集中在一天或几天内,现在需要把日期打散,平均分不到一个日期段内,那么这段代码就有用了。 declare @evid int,@pid int;declare evaluate cursor for select evaluateid,productid from dbo.productevaluate where createtime > '2014-10-20 00:00:01';open evaluate;fetch next from evaluate into @evid,@pid; while @@fetch_status = 0 begin declare @bdate datetime, @edate datetime,@pdate datetime; set @bdate = '20140101' --下限 select @bdate = convert(varchar(100), createtime, 112) from dbo.products where productid = @pid; set @edate = '20141020 23:59:59' --上限 update dbo.productevaluate set createtime =dateadd(second,abs(checksum(newid()))%datediff(second,@bdate,@edate),@bdate) where evaluateid = @evid ; fetch next from evaluate into @evid,@pid; endclose evaluate;deallocate evaluate;
