我有一个名为#RandomDates的临时表,在Server中如下所示:
╔════╦═════════════╦══════════╦══════════════════╦════════════════════════════════╦═══════════════════════╗
║ ID ║ Description ║ RaceType ║ RaceStartTime ║ AverageCompletionTimeInMinutes ║ PredictCompletionTime ║
╠════╬═════════════╬══════════╬══════════════════╬════════════════════════════════╬═══════════════════════╣
║ 1 ║ Player1 ║ RaceA ║ 2025-05-10 10:00 ║ 120 ║ NULL ║
╠════╬═════════════╬══════════╬══════════════════╬════════════════════════════════╬═══════════════════════╣
║ 2 ║ Player2 ║ RaceA ║ 2025-05-12 17:00 ║ 120 ║ NULL ║
╠════╬═════════════╬══════════╬══════════════════╬════════════════════════════════╬═══════════════════════╣
║ 3 ║ Player3 ║ RaceC ║ 2025-08-12 08:15 ║ 60 ║ NULL ║
╠════╬═════════════╬══════════╬══════════════════╬════════════════════════════════╬═══════════════════════╣
║ 5 ║ Player4 ║ RaceY ║ 2025-08-29 16:00 ║ 10 ║ NULL ║
╠════╬═════════════╬══════════╬══════════════════╬════════════════════════════════╬═══════════════════════╣
║ 6 ║ Player4 ║ RaceY ║ 2025-08-30 21:00 ║ 10 ║ NULL ║
╚════╩═════════════╩══════════╩══════════════════╩════════════════════════════════╩═══════════════════════╝我想用随机日期更新列"PredictCompletionTime“,但是我需要它们基于列"RaceStartTime”和"AverageCompletionTimeInMinutes“的值。
ID =1的示例
之间。
RaceStartTime + AverageCompletionTimeInMinutes +随机添加或减去少量的分钟和秒(假设在5-10分钟之间)
因此,此示例的有效日期可以是:
2025-05-10 12:07:20 2025-05-10 11:59:40
我尝试过用RAND()*来实现这个目的,但出于某种原因,我的"PredictCompletonTime“列不断地更新每个RaceType的重复值。
提前谢谢你,
发布于 2020-11-28 01:36:59
下面是一个示例,因此随机将在@MinTime和AverageCompletionTimeInMinutes之间为第二行创建一个随机数,并添加到RaceStartTime中:
DECLARE @MinTime int = 300 -- in second
UPDATE #tablename
SET PredictCompletionTime = DATEADD(SECOND ,ROUND(RAND() * (AverageCompletionTimeInMinutes*60 - @MinTime) , 0),RaceStartTime )
FROM #tablenamehttps://stackoverflow.com/questions/65045050
复制相似问题