3

我不熟悉 SQLite。有人可以帮我生成随机日期时间值吗?

我试图从这个开始(它用于 MS-SQL):

select dateadd(
               millisecond, 
               cast(86400000 * RAND() as int), 
               convert(time, '00:00')
               );

但 sqlite 返回错误:invalid column millisecond

我需要一些东西,它允许生成具有指定最小和最大日期的随机日期时间,但现在我认为只需要知道如何将数字转换为日期

我使用 SQLite 版本 3.7.15.1。

4

1 回答 1

5

random()函数生成随机 64 位整数。带有参数
strftime()函数'%s'将日期/时间字符串转换为自 1970 年以来的秒数。带有修饰符
datetime()函数'unixepoch'将秒数转换为日期/时间字符串。

要将随机整数转换为所需的秒范围,请使用模运算符 ( %),将最小/最大日期之间的秒差作为范围,并将其添加到开始日期。例如,以下将生成 2000 年 1 月的随机时间戳:

SELECT datetime(strftime('%s', '2000-01-01 00:00:00') +
                abs(random() % (strftime('%s', '2000-01-31 23:59:59') -
                                strftime('%s', '2000-01-01 00:00:00'))
                   ),
                'unixepoch');
于 2013-01-07T20:49:19.027 回答