Я пытаюсь создать запрос, чтобы создать диапазон дат между конкретной начальной и конечной точкой.Рекурсивный запрос для диапазона дат
У меня есть следующие:
WITH DATE_RANGE(DATE_FOR_SHIFT)
AS (SELECT DATE('2015-04-01')
FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT DATE_FOR_SHIFT + 1 DAY
FROM DATE_RANGE
WHERE DATE_FOR_SHIFT <= @END)
SELECT DATE_FOR_SHIFT
FROM DATE_RANGE;
Выход (при условии, что @END
равен 2015-05-01
):
2015-04-01
2015-04-02
2015-04-03
2015-04-04
...
2015-05-01
Выход правильно, но я хочу, чтобы иметь возможность изменить начальную и точек на основе по предоставленным параметрам, а не переписывать запрос или иметь запрос на инъекцию SQL.
Как бы переписать этот запрос, чтобы выполнить это?
Сторона примечания: типы даты/времени/времени, как и все положительные, континуальные диапазоны (все, кроме явного цельного числа), должны запрашиваться с помощью эксклюзивной верхней границы. [Это сообщение в блоге] (http://sqlblog.com/blogs/aaron_bertrand/archive/2011/10/19/what-do-between-and-the-devil-have-in-common.aspx) имеет дело с SQL Server , но проблема на самом деле связана с тем, как цифры представлены в целом (это не проблема на самом деле). О, и в DB2 вы можете указать количество дробных секунд для метки времени, поэтому оно будет применяться в любом случае. –