共通表式(WITH句)を再帰的に定義することで、連番などの補助テーブルを楽に作成することができる。
今回は、現在の時刻から、当日中の時刻を15分間隔で列挙するクエリを作成してみた。
WITH TimeTable (point, interval) AS
(
SELECT
GETDATE(), 15
UNION ALL
SELECT
DATEADD(minute,interval,point), interval
FROM
TimeTable
WHERE
DATEADD(minute,interval,point) < CAST(DATEADD(day,1,GETDATE()) AS date)
)
SELECT point FROM TimeTable
/* 結果
point
-----------------------
2019-04-28 20:27:17.327
2019-04-28 20:42:17.327
2019-04-28 20:57:17.327
2019-04-28 21:12:17.327
2019-04-28 21:27:17.327
2019-04-28 21:42:17.327
2019-04-28 21:57:17.327
2019-04-28 22:12:17.327
2019-04-28 22:27:17.327
2019-04-28 22:42:17.327
2019-04-28 22:57:17.327
2019-04-28 23:12:17.327
2019-04-28 23:27:17.327
2019-04-28 23:42:17.327
2019-04-28 23:57:17.327
*/