3

私はSQLiteに精通していません。誰かがランダムな日時値を生成するのを手伝ってくれますか?

私はこれから始めようとしました(MS-SQL用です):

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

しかし、sqlite はエラーを返します: invalid column millisecond.

指定された最小日付と最大日付でランダムな日時を生成できるものが必要ですが、今のところ、 number を date に変換する方法を知る必要があると思います

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 に答える