随机日期时间在给定的日期时间范围内

时间:2015-11-29 01:04:02

标签: sql-server datetime

我需要在T-SQL中为MS-SQL server 2012获取2个日期时间范围内的随机日期时间。我需要它达到秒的精度,我需要DATETIME2(0 )作为输入和输出的数据类型。我在网上做了一些研究,但我找到的答案要么只是日期,要么是其他数据库类型。

代码应该是这样的:

输入:(' 2015-01-01 08:22:13',#03; 2015-03-05 17:56:31')< - 我将使用select语句替换这些绝对数字

返回:(' 2015-02-11 14:32:45')< - 这应该是随机的

任何人都可以帮我解决这个问题吗?

提前致谢

1 个答案:

答案 0 :(得分:7)

一种选择是随机化FromDate和ToDate之间的秒数,然后将其添加到FromDate。希望它适合你。

DECLARE @FromDate DATETIME2(0)
DECLARE @ToDate   DATETIME2(0)

SET @FromDate = '2015-01-01 08:22:13' 
SET @ToDate = '2015-03-05 17:56:31'

DECLARE @Seconds INT = DATEDIFF(SECOND, @FromDate, @ToDate)
DECLARE @Random INT = ROUND(((@Seconds-1) * RAND()), 0)

SELECT DATEADD(SECOND, @Random, @FromDate)
相关问题