これを読み取るエレガントなSQLコードを探しています
これを作成します
@interval (分単位の整数) のパラメーターを指定すると、この場合は 30 分間隔になります。
最初のテーブルに基づいてログインした時間を計算し、30 分間隔ごとに 2 番目のテーブルに入れる必要があります。
RDMBS は MS SQL Server です。
事前にどうもありがとうございました。
これを読み取るエレガントなSQLコードを探しています
これを作成します
@interval (分単位の整数) のパラメーターを指定すると、この場合は 30 分間隔になります。
最初のテーブルに基づいてログインした時間を計算し、30 分間隔ごとに 2 番目のテーブルに入れる必要があります。
RDMBS は MS SQL Server です。
事前にどうもありがとうございました。
一般に、特定の日時値をパーティションに割り当てるには、単純な日付計算を使用します。
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 までの範囲の整数の連続シーケンスで構成されるシーケンス テーブルは、非常に役立つ場合があります。
(Date1 - date2)*24*60= 分単位の間隔