-3

これを読み取るエレガントなSQLコードを探しています

ここに画像の説明を入力

これを作成します

ここに画像の説明を入力

@interval (分単位の整数) のパラメーターを指定すると、この場合は 30 分間隔になります。

最初のテーブルに基づいてログインした時間を計算し、30 分間隔ごとに 2 番目のテーブルに入れる必要があります。

RDMBS は MS SQL Server です。

事前にどうもありがとうございました。

4

3 に答える 3

2

一般に、特定の日時値をパーティションに割り当てるには、単純な日付計算を使用します。

declare @moment_in_time           datetime = current_timestamp
declare @today                    datetime = convert(date,@moment_in_time)
declare @bucket_length_in_seconds int      = 30 * 60
declare @buckets_per_day          int      = 24*60*60 / @bucket_length_in_seconds
declare @bucket_number            int      = datediff(second,@today,@moment_in_time)
                                           / @bucket_length_in_seconds
declare @bucket_start_time        datetime = dateadd(second,
                                               @bucket_length_in_seconds
                                               * ( datediff(second,@today,@moment_in_time)
                                                   /
                                                   @bucket_length_in_seconds
                                                 ) ,
                                               @today
                                               )

select moment_in_time    = @moment_in_time ,
       today             = @today ,
       buckets_per_day   = @buckets_per_day ,
       bucket_number     = @bucket_number ,
       bucket_start_time = @bucket_start_time

ソース テーブルをカバーするバケットごとに行に展開するのは、あなた次第です。ヒント: たとえば、-1,000,000 から +1,000,000 までの範囲の整数の連続シーケンスで構成されるシーケンス テーブルは、非常に役立つ場合があります。

于 2013-09-17T19:03:53.563 に答える
0

(Date1 - date2)*24*60= 分単位の間隔

于 2013-09-17T18:16:27.187 に答える