T-SQL在某时间段内生成随机时间

用CHECKSUM()加NEWID()在sql中生成随机时间

CREATE PROCEDURE upc_GetRandDateTime
@beginDate DATETIME,--起始时间
@endDate DATETIME,--结束时间
@beginHMS VARCHAR(14),--起始时间的时分秒
@dateTime DATETIME OUTPUT
AS
BEGIN
    DECLARE @begin BIGINT,@span BIGINT
    SELECT @begin=CAST(@beginDate AS BIGINT),@span=CAST(@endDate-@beginDate AS BIGINT)
    DECLARE @dateTimeTb TABLE(RDDateTime DATETIME)
    DECLARE @i INT 
    SET @i=0
    WHILE @i<100
    BEGIN
        INSERT INTO @dateTimeTb( RDDateTime )
        SELECT CAST(ABS(CHECKSUM(NEWID()))%@span+@begin AS DATETIME)+@beginHMS+RAND()
        SET @i=@i+1
    END
    SELECT TOP 1 @dateTime=RDDateTime FROM @dateTimeTb WHERE DATEPART(HOUR,RDDateTime) BETWEEN 09 AND 18 ORDER BY NEWID()
END
go

 

转载于:https://www.cnblogs.com/DonnyPeng/p/4390278.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值