1

現在、SQLを使用して日付xから日付yまでの時系列の行を生成する関数を作成したいと考えています。

この関数には、x と y の 2 つの日付入力があります。それらは時間のない日付です (つまり、時間は 00:00:00 です)。関数は次のようになります。

function (@x date, @y date)

次に、結果は日付 x から日付 y までの時系列の行を生成します。毎回15分の差があります。結果には日付 y は含まれません。

たとえば、関数 ('2013-06-19', '2013-06-21') を呼び出すと、結果は次のようになります。

'2013-06-19 00:00:00'
'2013-06-19 00:15:00'
'2013-06-19 00:30:00'
...
'2013-06-19 23:30:00 '
'2013-06-19 23:45:00'
'2013-06-20 00:00:00'
'2013-06-20 00:15:00'
...
'2013-06-20 23:30:
00''2013-06-20 23:45:00 '

4

1 に答える 1

1

パフォーマンスの観点からは、必要なすべての日付を含むテーブルを作成することをお勧めします。

そのようなテーブルがなくても、とにかく集計テーブル (数字のテーブル) が必要です。

集計表

select  
    DATEADD(mi, n * 15, @x) 
from (
    select ROW_NUMBER() over (order by (select null)) - 1
    from
    master.dbo.spt_values
) as virtualTally(n)
where n < datediff(HH, @x , @y) * 4

出力は次のとおりです。

2013-06-19 00:00:00.000
2013-06-19 00:15:00.000
2013-06-19 00:30:00.000
...
2013-06-20 23:15:00.000
2013-06-20 23:30:00.000
2013-06-20 23:45:00.000
于 2013-06-19T09:09:34.090 に答える