Месяц мудрый дисплей - PullRequest
       17

Месяц мудрый дисплей

1 голос
/ 04 декабря 2009
Start Date: (mm/dd/yyyy) 05/09/2007
End Date: (mm/dd/yyyy) 08/20/2007

При указании даты начала и окончания с использованием вышеуказанных значений необходимо отобразить отчет в следующем формате.

Примечания: Требуется один запрос

Start Date End Date
05/09/2007 05/31/2007
06/01/2007 06/30/2007
07/01/2007 07/31/2007
08/01/2007 08/20/2007

Пожалуйста, помогите мне с этим запросом.

Ответы [ 2 ]

2 голосов
/ 04 декабря 2009

Вы можете попробовать что-то подобное, используя Sql Server 2005

DECLARE @StartDate DATETIME,
        @EndDate DATETIME

SELECT  @StartDate = '09 May 2009',
        @EndDate = '20 Aug 2009'

;WITH CTE AS(
        SELECT  @StartDate StartDate,
                DATEADD(MM, 1, CAST('01 ' + DATENAME(mm, @StartDate) +' ' + CAST(DATEPART(yyyy, @StartDate) AS VARCHAR(4)) AS DATETIME)) - 1 EndDate 
        UNION ALL
        SELECT  EndDate + 1 StartDate,
                CASE WHEN DATEADD(MM, 1, EndDate + 1) - 1 > @EndDate THEN @EndDate ELSE DATEADD(MM, 1, EndDate + 1) - 1 END EndDate
        FROM    CTE
        WHERE   EndDate < @EndDate
)
SELECT  *
FROM    CTE
0 голосов
/ 04 декабря 2009

Вот страница с форматами даты и времени SQL Server . Вы можете использовать его как:

select 
    convert(varchar(32), StartDate, 101) as StartDate
,   convert(varchar(32), EndDate, 101) as EndDate
,   ...
from YourTable
where StartDate between '2007-09-05' and '2007-08-20'
or EndDate between '2007-09-05' and '2007-08-20'

Для отображения строк, которые заканчиваются или начинаются в этот период.

Если вы хотите ввести даты в формате «месяц-день-год», но ваш SQL Server сконфигурирован для использования чего-то другого, вы можете использовать set dateformat. Это позволяет вам изменять настройки только для вашего сеанса. Для dmy это работает так:

set dateformat 'mdy'
select cast('12/31/2009' as datetime)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...