как найти между датами в SQL Server 2008? - PullRequest
1 голос
/ 24 февраля 2011

Я даю две разные даты в качестве входа. Я хочу найти, какие даты между двумя датами ..

Например:

1'st Input is :  2011-02-20 

2'nd input is :  2011-02-25

   Output is:
             2011-02-20
             2011-02-21
             2011-02-22
             2011-02-23
             2011-02-24
             2011-02-25

Есть ли какая-нибудь функция для нахождения даты между ...

иначе как найти?

Ответы [ 3 ]

2 голосов
/ 24 февраля 2011

См .:

Почему стоит подумать об использовании вспомогательной календарной таблицы?

Календарная таблица может значительно упростить разработку решений для любого бизнеса.модель, которая включает в себя даты.Последнее, что я проверил, это охватывает практически любую бизнес-модель, о которой вы можете подумать, до некоторой степени.Постоянные проблемы, которые в конечном итоге требуют подробных, сложных и неэффективных методов, включают следующие вопросы: Сколько рабочих дней между x и y?...

2 голосов
/ 24 февраля 2011

Вы можете использовать CTE для достижения этой цели.

DECLARE @StartDate  DATETIME
DECLARE @EndDate    DATETIME

SET @StartDate = '2011-02-20'
SET @EndDate = '2011-02-25'

;WITH GetDates AS
(
SELECT 1 as counter, @StartDate AS Date
UNION ALL
SELECT counter + 1, DATEADD( day, counter, @StartDate )
FROM GetDates
WHERE DATEADD( day, counter, @StartDate ) <= @EndDate
)
SELECT Date FROM GetDates
0 голосов
/ 24 февраля 2011
SELECT Date = @StartDate + number
  FROM master..spt_values
 WHERE type = 'P'
   AND number BETWEEN 0 AND DATEDIFF(day, @StartDate, @EndDate)

Примечание. Это решение неприменимо, если расстояние между двумя датами превышает 2047 дней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...