Получить первую и последнюю дату в течение следующих 12 месяцев в формате sql в формате datetime - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь получить первую дату и последнюю дату в течение следующих 12 месяцев с даты запуска отчета / запроса. Мне удалось получить следующие 12 месяцев с помощью запроса ниже, но не с первой и последней датами.Любые предложения о том, как это сделать, приветствуются.

SELECT STR(MONTH(DATEADD(mm,Number,GETDATE())),2)+'/'
      + STR(YEAR(DATEADD(mm,Number,GETDATE())),4),DATEPART(MM,'january '+'01 1900')
   FROM Master.dbo.spt_values
  WHERE NAME IS NULL
    AND Number BETWEEN 0 AND 11

Но результаты, которые он дает:

enter image description here

Но то, что я ожидаю:

enter image description here

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Попробуйте этот запрос

   SELECT 
CONVERT(datetime,  STR(MONTH(DATEADD(mm,Number,GETDATE())),2)+'/01/'+ STR(YEAR(DATEADD(mm,Number,GETDATE())),4)) firstdate,
dateadd(day,-1,CONVERT(datetime, STR(MONTH(DATEADD(mm,Number+1,GETDATE())),2)+'/01/'+ STR(YEAR(DATEADD(mm,Number+1,GETDATE())),4))) lastdate
FROM Master.dbo.spt_values
WHERE NAME IS NULL
AND Number BETWEEN 0 AND 11

, чтобы получить последнюю дату месяца, мы можем удалить один день с первой даты следующего месяца.

0 голосов
/ 10 мая 2018

При условии, что поддерживается EOMONTH функция, используйте

SELECT dateadd(day,1,dateadd(month,number-1,EOMONTH(getdate()))) as mth_start,
dateadd(month,number,EOMONTH(getdate())) as mth_end
FROM Master.dbo.spt_values
WHERE NAME IS NULL
AND Number BETWEEN 0 AND 11
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...