Расчет номера недели SQL Server - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть запрос, в котором мне нужно вычислить номер недели на основе финансового начала года, наступившего 01.07. ГОД

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

У меня заполнена таблица календаря;Я добавляю 18 месяцев к текущей дате, что дает мне период, и поэтому я пытался сделать то же самое для недели, но я хожу по кругу.

Ниже приведен код, который я использую:

SET DATEFIRST 1;
SELECT
  [date],
  DATEPART(wk, DATEADD(MONTH, 18, DATEADD(dd, -2, [date]))) 'FWeek',
  LEFT(CONVERT(varchar, DATEADD(MONTH, 18, [date]), 112), 6) AS 'Period',
  DATENAME(dw, [date]) AS 'Day'
FROM [dbo].[DP_PERIOD_DATES]
WHERE [date] >= '01/11/2018'
AND [date] < '04-01-2019'
ORDER BY [date] DESC

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

SET FWEEK = DATENAME (yy, (DATEADD (месяц, 18, [дата]))) + RIGHT ('00' + DATENAME (dy, (datepart (DAYOFYEAR, DATEDIFF (DY, 0, [date]) /)7 * 7 + 547) +5) / 7), 2), точка = ВЛЕВО (CONVERT (varchar, DATEADD (месяц, 18, [дата]), 112), 6)

Спасибо Павлу за всетвоя помощь;это действительно было нелегко, как пытаться применить чью-то логику к свиданию.Я получил его, используя приведенный выше код на тот случай, если кто-нибудь в будущем будет искать такой же ответ

0 голосов
/ 18 декабря 2018

Попробуйте datediff, чтобы получить количество недель от 1/7 / х.Дополнительным датой является получение первого числа года и добавление 6 для получения седьмого года.

SELECT [date],
DateDiff(wk, 
--JANUARY 7th of Current Year
DATEADD(yy, DATEDIFF(yy, 0, DATEADD(m,18,[date])), 0)+6
, DATEADD(m,18,[date]))
FROM [dbo].[DP_PERIOD_DATES]
WHERE [date] >= '01/11/2018'
AND [date] < '04-01-2019'
ORDER BY [date] DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...