2013-01-07 78 views
2

我不熟悉SQLite。有人可以帮助我生成随机的日期时间值吗?SQLite - 选择范围内的随机日期时间

我试图用这个来开始(其为MS-SQL):

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

但SQLite的返回错误:invalid column millisecond

我需要的东西,它允许生成具有规定的最低和最高的日期,但随机日期时间,现在我想只需要知道如何将数字转换为日期

使用SQLite版本3.7.15.1的Im。

+1

请查看以下链接http://stackoverflow.com/questions/2171578/seeding-sqlite-random – Hiten004

+0

你的语法是SQL服务器,而不是SQLite的。你使用的是哪个数据库? –

+0

对于这个随机日期,你想要的范围是否有限制?从现在开始它可以是1000年吗? – PinnyM

回答

5

random() function生成随机的64位整数。
strftime() function'%s'参数转换自1970年以来
datetime() function'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'); 
+0

谢谢。它完美的作品。 – Kamil