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)[email protected]+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
时间: 2024-07-30 00:50:30

T-SQL在某时间段内生成随机时间的相关文章

[三卷天书]记一个asp.net生成两个日期范围内生成随机时间的方法

想网上找个生成随机天数的方法找不到,后面只得自己写了,贴给大家方便使用 思路:算两个日期的相差天数,然后在0到相差天数的范围内生成随机数,再用结束时间的天数部分减去这个随机数,代码: /// <summary> /// (在两个时间范围内)生成随机日期 /// </summary> /// <param name="startime">开始时间</param> /// <param name="endtime"&

oralce sql 创建指定时间段内的日历信息

-- Create table create table TEMP_CALENDAR ( MONTH VARCHAR2(6), W_7   VARCHAR2(2), W_1   VARCHAR2(2), W_2   VARCHAR2(2), W_3   VARCHAR2(2), W_4   VARCHAR2(2), W_5   VARCHAR2(2), W_6   VARCHAR2(2), WEEK  VARCHAR2(20) ) ; -- Add comments to the table c

SQL查询某个时间段内的8-9点的数据

select datename(HOUR,rd.SignTime) 使用这个SQL函数就能查找到rd.SignTime的小时为多少 使用: SELECT * FROM table rd WHERE (select datename(HOUR,rd.SignTime))=8 则可以查询到  8:00:00-8:59:59的数据(就是 小时 为  8 的 时间)

SQL Server 查询时间段内数据

方式一: ALTER Proc [dbo].[usp_Rpt_AcctTypeAudit] @FromDate datetime=null, -- yyyy-mm-dd (may change in the future!) @ToDate datetime=null, -- yyyy-mm-dd (may change in the future!) @UserID nvarchar(50) = 'ALL' as BEGIN set nocount on if @ToDate is not n

mysql生成随机时间

mysql> update test set create_time=concat('2013-10-01 ', floor(10+rand()*10),':',floor(10+rand()*49),':',floor(10+rand()*49)) where create_time='0000-00-00 00:00:00'; Query OK, 1 row affected Rows matched: 1 Changed: 1 Warnings: 0

PHP随机生成指定时间段的指定个数时间

/** * 生成某个范围内的随机时间 * @param <type> $begintime 起始时间 格式为 Y-m-d H:i:s * @param <type> $endtime 结束时间 格式为 Y-m-d H:i:s * @param <type> $now 是否是时间戳 格式为 Boolean */ function randomDate($begintime, $endtime="", $now = true) { $begin = st

js 日期比较大小,js判断日期是否在区间内,js判断时间段是否在另外一个时间段内

/** * 日期解析,字符串转日期 * @param dateString 可以为2017-02-16,2017/02/16,2017.02.16 * @returns {Date} 返回对应的日期对象 */ function dateParse(dateString){ var SEPARATOR_BAR = "-"; var SEPARATOR_SLASH = "/"; var SEPARATOR_DOT = "."; var dateArr

均匀的生成圆和三角形内的随机点

代码在每一章节最后   一.均匀生成圆内的随机点 我们知道生成矩形内的随机点比较容易,只要分别随机生成相应的横坐标和纵坐标,比如随机生成范围[-10,10]内横坐标x,随机生成范围[-20,20]内的纵坐标y,那么(x,y)就是生成的随机点.由此,我们很容易的想到了算法1 算法1(正确的): 每个圆对应一个外切矩形,我们随机生成矩形内的点,如果该点在圆内,就返回改点,否则重新生成直到生成的点在圆内. 该方法的缺点是有可能连续几次都生成不了符合要求的点.(可以求得:每次生成点时,该点有 的概率在圆

SQL查询出当前服务器时间是否在表T1时间段内,如果有则选择出

表T1 开始 时间         结束时间          09:00:00          12:00:00      14:00:00          17:00:00 查询出当前服务器时间是否在表T1时间段内,如果有则选择出 选出的sql结果集如下,求SQL,  注:SQL2000环境 开始 时间         结束时间           14:00:00          17:00:00 方法一: DECLARE @t TABLE (     beginTime CHAR(