1、随机生成0-10000之间的随机数:
select round(rand() * 10000,0)
2、随机生成一个2020-01-01到今天之间的随机时间
declare @Date_start datetime declare @Date_end datetime
set @Date_start= '2020-01-01'
set @Date_end=getdate()
select dateadd(minute,abs(checksum(newid()))%(datediff(minute,@Date_start,@Date_end)+1),@Date_start)
输出结果:2020-09-19 19:51:00.000
3、随机生成某一天的随机时间
declare @Date_start datetime declare @Date_end datetime
set @Date_start= '2020-01-01'
set @Date_end='2020-01-02'
select dateadd(minute,abs(checksum(newid()))%(datediff(minute,@Date_start,@Date_end)+1),@Date_start)
输出结果:2020-01-01 19:51:00.000
4、随机生成一个2020-01-01到2021-09-01之间的随机时间
declare @t1 datetime,@t2 datetime,@dd int
set @t1='2020-01-01'
set @t2='2021-09-01'
set @dd=datediff(dd,@t1,@t2)*rand()
select dateadd(dd,@dd,@t1)
输出结果:2020-09-19 19:51:00.000
5、仅可单个更新score字段为1-100之间的随机值
UPDATE user SET score=(select round(rand() * 100,0))
如果需要1-1000,则将为100改为1000,以此类推
rand函数有个弊端,若想在一张表的每一元组后面生成一个唯一的随机数时(即在表中添加一列随机数),只能用CHECKSUM和NEWID来实现
6、可批量更新CreatedDate字段为2021-01-01到今天之间的随机时间
UPDATE user SET CreatedDate=dateadd(ss,abs(checksum(newid())%31449600), '2021-01-01 '+convert(varchar,getdate(),14) )
7、可批量更新score字段为3位数的随机值
update user set score=substring(LTrim(abs(checksum(newid()))),0,4)
8、可批量更新score字段为0-10000之间的随机值
update user set score=ROUND(RAND(substring(LTrim(abs(checksum(newid()))),0,6))*10000, 0)