我需要在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')< - 这应该是随机的
任何人都可以帮我解决这个问题吗?
提前致谢
答案 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)