Мне было интересно, есть ли способ в SQL Server 2000 создать все даты с датой начала и окончания в результате. Я знаю, что могу добиться этого с помощью цикла T-SQL. Я ищу ненужное решение. Также в 2005 году вы можете использовать предложение recursive with. В решении также может быть использована таблица T, в которой есть номера, чтобы присоединиться к таблице. Опять же, я смотрю на SQL Server 2000 без циклов/использование T таблиц. Есть ли?SQL Server 2000 (создание всех дат с датерами)
0
A
ответ
2
SELECT
DATEADD(dy, T.number, @start_date)
FROM
T
WHERE
number BETWEEN 0 AND DATEDIFF(dy, @start_date, @end_date)
таблица Календарь также может быть полезным для такого рода запросов, и вы можете добавить дату конкретную информацию к нему, например, является ли день это праздник, считается как «бизнес» день и т.д.
1
попробовать это:
создать таблицу чисел, нужно только сделать это один раз в вашей БД:
CREATE TABLE Numbers (Number int NOT NULL)
GO
ALTER TABLE Numbers ADD CONSTRAINT PK_Numbers PRIMARY KEY CLUSTERED (Number)
GO
DECLARE @x int
set @x=0
WHILE @X<8000
BEGIN
SET @[email protected]+1
INSERT INTO Numbers VALUES (@x)
END
--run ваш запрос:
DECLARE @StartDate datetime
DECLARE @EndDate datetime
set @StartDate='05/03/2009'
set @EndDate='05/12/2009'
SELECT
@StartDate+Number-1
FROM Numbers
WHERE Number<=DATEDIFF(day, @StartDate, @EndDate)+1