Получать некий день недели между одной ранг дат в [закрытом] SQL

Как Получение дат некоего дня недели между двумя датами. Пример: Все даты понедельника между в ранге 2016-01-19 в 2016-02-19 Reultado: 2016-01-23 2016-01-30 2016-02-06 2016-02-13

Это - то, что я делаю, но получаю по средам:

DECLARE @TEMP TABLE(REGISTRO DATE)
DECLARE @startdate datetime = '2016-01-19'
DECLARE @enddate datetime = '2016-02-19' ;with cte(col)
AS
(
SELECT @startdate
UNION ALL
SELECT col + 1
FROM cte
WHERE col <= @enddate
)
INSERT INTO @TEMP
SELECT *
FROM cte
WHERE DATEDIFF(dd,0,col)% 7 = 0

SELECT * FROM @TEMP
2
задан 19.01.2017, 17:47
0 ответов

Используй функцию DATEPART чтобы просачиваться согласно дню недели даты.

Я думаю, что день зависит от конфигурации сервера; в моем случае понедельник возврати 1, но сделай доказательства для твоего случая в особенности.

SELECT @startdate
UNION ALL
SELECT col + 1
FROM cte
WHERE col <= @enddate
)
INSERT INTO @TEMP
SELECT *
FROM cte
WHERE DATEPART(weekday,col) = 1;
0
ответ дан 03.12.2019, 17:37
  • 1
    Старайтесь делать это así и он продолжает встречаться в среды –  19.01.2017, 18:14
  • 2
    2016-01-25 2016-02-01 2016-02-08 2016-02-15 –  19.01.2017, 18:14
  • 3
    @DanitzaAyala Эти даты - в 2016. Все даты - понедельник, но Ваши эквиваленты 2017 - mié rcoles; я думаю, что ты запутался поэтому. –  19.01.2017, 18:17
  • 4
    я это чувствую уже я увидел мою ошибку он помещал 2016 и занимал в 2017 –  19.01.2017, 18:22

Теги

Похожие вопросы